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
Apache2 mod_重写模式限制?_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache2 mod_重写模式限制?

Apache2 mod_重写模式限制?,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,因此,我有一个网站,我想使搜索引擎优化友好的使用mod_重写。我希望通过在URL的末尾删除.php并稍后使用mod_rewrite重新附加URL,使URL易于记忆。比如说,我会指出。根据我的经验,我有重写规则,但由于某些原因,它不起作用 我的规则: RewriteEngine On RewriteRule ^/?about$ about.php [L] RewriteRule ^/?faq$ faq.php [L] 现在,这些规则并不是这样运作的。似乎如果我将文件重命名为blah.about.

因此,我有一个网站,我想使搜索引擎优化友好的使用mod_重写。我希望通过在URL的末尾删除.php并稍后使用mod_rewrite重新附加URL,使URL易于记忆。比如说,我会指出。根据我的经验,我有重写规则,但由于某些原因,它不起作用

我的规则:

RewriteEngine On
RewriteRule ^/?about$ about.php [L]
RewriteRule ^/?faq$ faq.php [L]
现在,这些规则并不是这样运作的。似乎如果我将文件重命名为blah.about.php和blah.faq.php,并更改重写规则行以反映新的文件名,它就会工作

这是mod_rewrite的一个限制,模式不能如此接近目标文件吗?

尝试以下方法:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*)\.php [NC]
RewriteRule ^ /%1 [R=301,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^([^/]+)/?$ $1.php [L]
第一条规则将请求重定向到phpless页面,下一条规则在内部重定向到php文件本身

这是mod_rewrite的限制吗?模式不能如此接近目标文件

这并不是一个真正的限制,您只是不能将php文件重定向到非php,然后在它生成循环时返回到它,所以我们要做的是捕获请求并从那里重定向,然后在内部重定向到该文件


当然,除非你看到他们有不同的名字。

如果我的答案能解决你的问题,请告诉我