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) にあり、ほとんどのサイトもそうです。私が抱えている問題の 1 つは、インクルードの一部にアクセスすると、index.php が引き戻されることです。

アドバイスや、htaccess に関するいくつかの記事や記事への指示をいただければ幸いです。

ありがとう

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 に答える