0

我试图通过 Apache 的文档来获得这个问题的答案,但我不得不承认我对 mod_rewrite 发生的许多复杂的小问题一无所知。

基本上,我有一个做得太多的重写规则。我只希望将两种类型的 URL 重定向到 index.php:

http://domain.com/pathone/*

http://domain.com/pathtwo/*

但是,正如您从下面的规则中所期望的那样,我现在所拥有的是重写所有内容。这意味着如果http://domain.com/about.php没有被重定向回index.php.

这是我目前所拥有.htaccess的:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index.php
RewriteRule (.*) index.php [L]

我在想我可以将 RewriteRule 更改为

RewriteRule ^/(pathone|pathtwo)/(.*) index.php [L]

但这似乎打破了一切:/

对于此事,我将不胜感激:) 提前致谢!

4

2 回答 2

0

正如预期的那样,我只需要一个更好的 RewriteRule。我把它改成

RewriteRule ^(pathone/|pathtwo/)[a-zA-Z0-9]+$ index.php [L]

它似乎正在工作。尽管由于某种原因,当文件确实存在时,某些文件会返回 500 错误……也许是另一天的问题。

于 2013-06-14T06:01:43.743 回答
0

RewriteRule 就是根据上述条件采取的行动。最后一个 RewriteCond 声明任何非 index.php 都将采取以下操作。您需要编辑此条件,而不是操作。

于 2013-06-14T06:02:28.793 回答