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进行多个重定向_.htaccess_Redirect - Fatal编程技术网

使用.htaccess进行多个重定向

使用.htaccess进行多个重定向,.htaccess,redirect,.htaccess,Redirect,我有一个扩展名为.php的网站。到目前为止,我已经设置好重写服务器端,使用.htaccess从文件名中删除.php,使其成为example.com/filename,我还将其设置为重定向/filename到/filename/。现在我想将/filename.php重定向到/filename/。我该怎么做 我现在得到的是: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILE

我有一个扩展名为.php的网站。到目前为止,我已经设置好重写服务器端,使用.htaccess从文件名中删除.php,使其成为example.com/filename,我还将其设置为重定向/filename到/filename/。现在我想将/filename.php重定向到/filename/。我该怎么做

我现在得到的是:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([^/]+/)*[^./]+)/$ /$1.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
</IfModule>

这将执行重定向并发送301状态代码,该代码告诉浏览器和搜索引擎这是一个永久重定向

RewriteRule ^(.*)\.php$ $1/ [R=301,NC]

所以我会在:RewriteRule.*$/$1/[R=301,L]之后添加这个,对吗?第一节删除.php,第二节重定向不带/to/,并且您所拥有的重定向将.php重定向到/Yes-在您建议的地方弹出它,重定向将在.php之前插入一位,然后在/,因此hello.php应该重定向到hello/当我在那里添加它时,浏览器返回重定向错误。可能一次执行的重定向太多了?我代码最后一行中的L表示last correct?啊,它表示last如果此规则匹配,则此操作将停止。htaccess规则在匹配规则后不会重新计算。因此我需要从第一行中删除L并将其忽略,或者将NC添加到这两个规则中?