寻找关于mod_rewrite和htaccess的建议

时间:2013-10-01 18:21:08

标签: .htaccess mod-rewrite

我对htaccess没有经验......但是我正在创作一个我正在使用简单重定向的网站。我基本上只是复制了我找到​​的第一个htaccess并且工作正常,但我很好奇我是否正确使用它和/或它是否对我在网站上遇到的一些问题负责。

这是我的档案..

RewriteEngine On

Exclude some directories from URI rewriting
RewriteRule ^(dir1|dir2|dir3) - [L]

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /src/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/src/.*$
RewriteRule ^(.*)$ /src/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^src/.*$ /src/index.php [NC,L]

index.php(正如你所知)生活在/ src中,就像网站上的大多数人一样。 我遇到的一个问题是,访问一些包含会导致拉回index.php!

任何有关htaccess的建议或指示,都会非常感激。

由于

2 个答案:

答案 0 :(得分:1)

不得不说这里的代码很多都是多余的。用以下代码替换您的代码:

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} ^/(dir1|dir2|dir3) [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteCond %{REQUEST_URI} !^/src/.*$
RewriteRule ^(.*)$ /src/$1 [L]

RewriteRule ^src/.*$ /src/index.php [NC,L]

另外当你说ccessing some of the includes results in pulling back the index.php!时,我希望你只是包括他们:

include('path/to/somefile.php');

这不会经过.htaccess,因为这种包含对Apache来说是透明的。

答案 1 :(得分:0)

尝试结合一些规则:

RewriteEngine On

# Exclude some directories from URI rewriting
RewriteRule ^(dir1|dir2|dir3) - [L]

# block access to the htaccess file
RewriteRule ^\.htaccess$ - [F,L]

# route "/" requests to index.php
RewriteRule ^$ /src/index.php [L]

# route requests that exists in /src/ to /src/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/src%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/src%{REQUEST_URI} -d
RewriteRule ^(.*)$ /src/$1 [L]

# route everything else to /src/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /src/index.php [L]