我正在尝试将.php上的网址从.php重写为.html,而我还有一些其他规则会干扰我想要做的事情。
下面的代码显示了所有规则,但我有一些平面的PHP页面,我想转换成.html页面。一个例子是history.php到history.html。
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
##Vendor Pages
RewriteRule ^([^/]+)/([^/]+)/([^.]+)\.html?$ vendors2.php?vendorslug=$3&locationslug=$1&categoryslug=$2 [L,QSA,NC]
##Listing Pages
RewriteRule ^([^/]+)/([^.]+)\.html?$ listings.php?locationslug=$1&categoryslug=$2 [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !^(.*/)?history\.html$ [NC]
RewriteRule ^([^/.]+)\.html?$ $1.php [L,NC]
##Locations Pages
RewriteRule ^([^/.]+)\.html?$ locations.php?locationslug=$1&Submit=Submit [L,QSA,NC]
目前,代码似乎与其他规则混淆,因为它因为规则而试图将页面作为“位置页面”返回。
我需要将几个页面变成.html(history.php,news.php,maps.php,resources.php,trivia.php等)。
感谢任何建设性的帮助。
答案 0 :(得分:1)
你可能根本就没有匹配RewriteCond。检查文件是否存在的RewriteCond
可能被解释为“文件是/home/username/public_html/history.html.php
吗?”,这将失败。
我建议您在规则之前添加几个RewriteCond
,而不是在RewriteRule
之前用一个##Locations Pages
替换它。如下所示:
RewriteRule (history|news|maps|resources)\.html $1.php [L]
请注意,如果你有很多条目,这可能会产生一个loooong线,所以你可以把它分成几个规则。
如果您正在寻找“root”中的请求:
RewriteRule ^(history|news|maps|resources)\.html$ $1.php [L]