1

我需要制定重写条件:

我想将用户重定向到/Cms/index.php/$1在 URL 中找到“cms”时,例如:http://example.com/cms/

否则我想重定向到/App/index.php/$1,我已经做了一些事情,但它给了我 500 错误。

RewriteEngine On
RewriteRule ^cms     /Cms/index.php/$1 [L]
RewriteRule ^.*$     /App/index.php/$1 [L]

谢谢

@编辑

我试过了,但它也让我赚了500。

error.log

[Sun Dec 23 19:40:54 2012] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error.vUse 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
4

2 回答 2

0

尝试使用此代码:

RewriteEngine On
RewriteRule ^cms(.*)     /Cms/index.php/$1 [L]
RewriteRule ^(.*)$     /App/index.php/$1 [L]
于 2012-12-23T18:32:06.750 回答
0

请注意,apache 不会只运行一次重写规则。它会尝试应用规则,直到 url 不再更改(这使得 mod_rewrite 非常强大)。这就是你得到错误的原因。规则正在创建一个重定向循环。

例如,/cms/test指向/Cms/index.php/test,而后者又被第二条规则匹配,导致它指向/App/index.php/Cms/index.php/test,该 url 再次被第二条规则匹配,将其指向/App/index.php/App/index.php/Cms/index.php/test等等。

为了防止这个循环,添加一个重写条件:

RewriteEngine On

RewriteRule ^cms     /Cms/index.php/$1 [L]

RewriteCond %{REQUEST_URI} !^/(Cms|App)
RewriteRule ^.*$     /App/index.php/$1 [L]
于 2012-12-23T21:51:09.003 回答