0

我对 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 中),该站点的大多数 pf 也是如此。我遇到的一个问题是访问某些包含会导致撤回 index.php!

任何关于 htaccess 的 tuts 或文章的建议或指导将不胜感激。

谢谢

4

2 回答 2

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 是透明的。

于 2013-10-01T19:58:38.983 回答
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]
于 2013-10-01T19:59:35.547 回答