Apache的mod_rewrite接管了所有内容

时间:2013-06-14 05:19:38

标签: apache .htaccess mod-rewrite

我试着通过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]

但这似乎打破了一切:/

我非常感谢对此事的任何帮助:)提前致谢!

2 个答案:

答案 0 :(得分:0)

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

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

它似乎正在发挥作用。虽然,由于某种原因,当文件确实存在时,某些文件会返回500个错误......也许是另一天的问题。

答案 1 :(得分:0)

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