.htaccess URL重写的多种规则
这是我的网站当前的.htaccess。重写假定有两个函数,将内部url example/profile.php/name=xyz转换为example/xyz作为外部url,并删除html文件的扩展名 但是删除扩展名不起作用,例如对于一个名为xyz.html的文件,它得到404和404.htaccess URL重写的多种规则,.htaccess,url-rewriting,.htaccess,Url Rewriting,这是我的网站当前的.htaccess。重写假定有两个函数,将内部url example/profile.php/name=xyz转换为example/xyz作为外部url,并删除html文件的扩展名 但是删除扩展名不起作用,例如对于一个名为xyz.html的文件,它得到404和404 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.html -f RewriteRul
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html[L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)$ /profile.php?name=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ /profile.php?name=$1
在地址栏。我认为这两个规则之间存在一些冲突。
RewriteCond
只适用于下一个RewriteRule
,因此上一个规则运行时没有任何RewriteCond
。您还需要在所有规则中使用[L]
(最后一个)标志
使用此代码:
example.com/xyz/?name=xyz
您在最后一行的第二个括号中有一个输入错误,很遗憾,我无法编辑6个字符以下的内容,所以我只留下一条评论。非常感谢@Winter。我修正了那个打字错误。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ /$1.html [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /$1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\w-]+)/?$ /profile.php?name=$1 [L]