我有以下htaccess文件:htaccess的重定向失败,多个网址参数
RewriteEngine On
RewriteBase/
# Redirect to remove .php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
# Redirect to "page" for dynamic pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ page?url=/$1 [L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]
这让我定制CMS使用动态URL(http://example.com/some-page,例如),重定向到http://example.com/page?url=some-page从而使CMS可以呈现内容。这一切都很好 - 直到有人添加了一个像http://example.com/something/else这样的URL。当我吐出url参数:print $_GET['url'];
我得到/something/else.php/else
。
所以看起来像删除.php指令迷路了,第二个参数重复?谢谢你的帮助。
能removeing从字符串.php为是一个解决办法? – GrumpyCrouton
第一条规则应该是这样做的 - 我知道一个是因为我有几个静态页面可以很好地显示(没有.php)。 –
“'page?url =/$ 1 [L]'” - 不应该是'page.php'吗? (否则,你正在依靠mod_rewrite以后再添加扩展与另一个重写。) – MrWhite