.htaccess 寻找有关mod_重写和htaccess的建议

.htaccess 寻找有关mod_重写和htaccess的建议,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我对htaccess没有经验。。。但我正在创作一个网站,我正在使用一个简单的重定向。我基本上只是复制了我发现的第一个htaccess,它工作得很好,但是我很好奇我是否正确地使用了它和/或它是否对我在网站上遇到的一些问题负责 这是我的档案 RewriteEngine On Exclude some directories from URI rewriting RewriteRule ^(dir1|dir2|dir3) - [L] RewriteRule ^\.htaccess$ - [F]

我对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]
php(如您所知)位于/src)中,与站点中的大多数pf一样。 我遇到的一个问题是,访问一些include会导致返回index.php

如果您有任何关于htaccess的建议、指导或文章,我们将不胜感激


谢谢

我不得不说这里的很多代码看起来是多余的。将代码替换为以下内容:

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]
另外,当您说
访问一些include时,会导致收回index.php我希望您只是像这样包含它们:

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

这将不会通过
.htaccess
,因为此包含对Apache是透明的。

尝试结合一些规则:

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]