Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess URL重写的多种规则_.htaccess_Url Rewriting - Fatal编程技术网

.htaccess URL重写的多种规则

.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

这是我的网站当前的.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
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]