htaccess重写在参数表末尾给出off.php
我已经创建了自己的htaccess重写在参数表末尾给出off.php,php,apache,.htaccess,Php,Apache,.htaccess,我已经创建了自己的.htaccess文件,目的是更改我网站的用户名URL(同时从所有URL中删除.php扩展名) 其目的是将URL转换为: www.example.one/profile.php?id=username 到 www.example.one/username 我知道这是“用户名”htaccess重写的常见问题,但是,我所找到的答案都没有帮助我解决问题 这是我的全文.htaccess: Options -Indexes Options +FollowSymLinks Rewrite
.htaccess
文件,目的是更改我网站的用户名URL(同时从所有URL中删除.php
扩展名)
其目的是将URL转换为:
www.example.one/profile.php?id=username
到
www.example.one/username
我知道这是“用户名”htaccess重写的常见问题,但是,我所找到的答案都没有帮助我解决问题
这是我的全文.htaccess
:
Options -Indexes
Options +FollowSymLinks
RewriteEngine On
# only allow rewriting to paths that dont exist
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
# redirect example.one to www.*
RewriteCond %{HTTP_HOST} ^example\.one$ [NC]
RewriteRule ^(.*)$ http://www.example.one [R=301,L]
# no php extension
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
# example.one/username
RewriteRule ^/([a-zA-Z_\-0-9]+)*$ ./profile.php?id=$1
干杯。您可以在站点根目录中使用这些规则。htaccess:
Options +FollowSymLinks -Indexes
RewriteEngine On
# redirect example.one to www.*
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} /profile\.php\?id=([\w-]+) [NC]
RewriteRule ^ /%1? [R=301,L]
# no php extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
# example.one/username
# only allow rewriting to paths that dont exist
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\w-]+)/?$ profile.php?id=$1 [L,QSA]
我建议您使用
/profile/{username}
,否则许多URL将被解释为存在用户名。例如/home
,/about
,等等@AnthonyB这就是我使用第二段代码的原因。防止实际路径出错。当我尝试/username
时,您的块没有php扩展名
正在尝试添加“.php”扩展名。谢谢您的回答!但是第二个代码块(([^\s&]+)
)和最后一个代码块(([\w=]+)
)中的正则表达式做什么呢?谢谢,但我的问题是他们的目标是什么?([\w=]+)
匹配1+个单词或连字符([^\s&]+)
匹配问题的1+非空格、非字符。但是,他们不应该在选择用户名时只针对用户可用的字符吗?哦,我不知道!谢谢:)