1

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

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

重写网址: 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]
4

1 回答 1

1

首先,在没有 的情况下测试您的规则301,因为浏览器会缓存 301 结果并使测试变得更加困难。R=301在您对规则满意之前不要添加。另请参阅调试 .htaccess 重写规则的提示

您不需要测试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]
于 2013-01-27T22:06:11.330 回答