繁体   English   中英

Apache2 mod_rewrite模式限制?

[英]Apache2 mod_rewrite pattern restriction?

所以我有一个网站,我想通过使用mod_rewrite使SEO友好。 我想通过将.php放在它们的末尾并使用mod_rewrite在以后重新附加它们来使URL易于记忆。 因此,例如说http://example.com/about将指向http://example.com/about.php 我有RewriteRule应该可以根据我的经验来工作,但是由于某种原因却不能。

我的规则:

RewriteEngine On
RewriteRule ^/?about$ about.php [L]
RewriteRule ^/?faq$ faq.php [L]

现在,这些规则并不完全适用。 看来,如果我将文件重命名为blah.about.php和blah.faq.php并更改RewriteRule行以反映新文件名,则它可以工作。

这是mod_rewrite的一个限制,其中Pattern不能离目标文件那么近吗?

尝试这个:

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的一个限制,其中Pattern不能离目标文件那么近吗?

它并不是真正的限制,您无法将php文件重定向到非php,然后在生成循环时又将其重定向到非php,所以我们要做的是捕获请求并从那里重定向,然后在内部重定向到文件。

当然,除非像您看到的那样,否则它们的命名是不同的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM