.htaccess的特殊重写规则

时间:2013-01-27 20:02:29

标签: .htaccess mod-rewrite url-rewriting rewrite

在尝试使用以下条件进行正确的.htaccess重写时遇到问题

原始网址: http://example.com/foo/bar/ANYTHING(http或https,ANYTHING可以是用户输入的任何内容)

重写的网址: https://example.com/foo/bar/index.php/this/that/ANYTHING

但不要用index.php重写任何内容。

我已经尝试了几个选项,但我一直在获取新URL中包含的文件系统路径。

我的尝试:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /foo/bar/
RewriteCond %{HTTP_HOST} example.com$ [NC]
RewriteCond %{HTTP_HOST} !index.php
RewriteRule ^(.*)$ https://example.com/foo/bar/index.php/this/that/$1 [R=301,L]

1 个答案:

答案 0 :(得分:1)

首先,在没有 301的情况下测试您的规则,因为浏览器会缓存301结果并使测试更加困难。在您对规则满意之前,请先添加R=301。 另请参阅Tips for debugging .htaccess rewrite rules

除非在同一目录中托管多个域,否则无需测试example.comindex.php的测试针对的是REQUEST_URI,而不是HTTP_HOST

RewriteEngine On
RewriteCond %{REQUEST_URI} !index.php
RewriteRule ^/?foo/bar/(.*)$ https://example.com/foo/bar/index.php/this/that/$1 [R,L]