在尝试使用以下条件进行正确的.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]
答案 0 :(得分:1)
首先,在没有 301
的情况下测试您的规则,因为浏览器会缓存301结果并使测试更加困难。在您对规则满意之前,请先添加R=301
。
另请参阅Tips for debugging .htaccess rewrite rules。
除非在同一目录中托管多个域,否则无需测试example.com
。
index.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]