Mod_Rewrite重写目录我不想要它

时间:2013-02-14 18:19:44

标签: apache mod-rewrite kohana

所以我使用的是Kohana,如果你知道它很有用,但不需要帮助我。

我有以下mod_rewrite规则:

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/store/.*$

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php [L]

所以我试图将对index.php不存在的文件和目录的所有请求重写。

但是,我希望发送到mydomain.com/store/*的任何请求都能通过,因为store目录中有另一个htaccess文件可以在那里工作。目前似乎没有起作用。有什么想法吗?

完整的htaccess:

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

#ErrorDocument 404 http://www.mydomain.com/404Page.html
#Options +FollowSymlinks

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>


RewriteCond %{REMOTE_ADDR} !^myip
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://www.mydomain.com/maintenance.html [R=307,L]

##301 Redirect Rules##
#some 301 redirects i did not include here

##Kohana Redirect Rules##

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system|kohana|vendors)\b.* http://www.mydomain.com/ [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/?store/

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php [L]

2 个答案:

答案 0 :(得分:1)

试试这个条件:

RewriteCond %{REQUEST_URI} !^/?store/

无需检查目录后的字符。如果我正确记得第一个斜杠,只有当你的服务器配置不包含拖尾斜杠时,我才能看到第一个斜杠是可选的。

答案 1 :(得分:0)

问题原因是在store目录中的.htaccess文件中,而不是webroot中的那个.htaccess文件。谢谢大家,对不起我的愚蠢。如果有人想留下关于如何为将来的用户调试这种性质的东西的评论那么棒。