1

私はこれを1〜2時間正しくしようとして、同様の問題を探して解決策を試してきました。これはおそらく、答えが本当に明白な場合の1つです。

domain.com/title/whateverおよびdomain.com/title/anotherpageアクセスしているすべての人をPHPスクリプトにリダイレクトしようとていますが、ページにアクセスしようとすると404エラーが発生します。

私はhtaccessファイルでこのコードを使用しています:

RewriteEngine on
RewriteRule ^/plugins/(.*)$ /yourscript.php?plugin=$1 [L]

これが私の.htaccessファイルの完全なコピーです。

ErrorDocument 404 /error/404.php

#Prevent full listing of files
Options -Indexes 

#Redirect plugins
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/plugins/(.*)$ /foobar.php?plugin=$1 [NC,L]
</IfModule>

#Hide .php extension
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
</IfModule>

#compress
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript 

foob​​ar.phpスクリプトをルートフォルダーとフォルダー名プラグインの両方に配置してみました。

よろしくお願いします。

4

1 に答える 1

2

すべてが適切な場所にあるように見えますが、正規表現の先頭のスラッシュを削除してみてください(または少なくともオプションにします)。

RewriteRule ^/?plugins/(.*)$ /yourscript.php?plugin=$1 [L]

htaccessファイルでは、apacheはURIのプレフィックス(先頭のスラッシュ)を削除してから、htaccessファイルのルールに渡します。


domain.com/plugins/正しくリダイレ​​クトされるものは何でも。ただし、domain.com/ pluginsもスクリプトに転送されます。代わりに、「plugins」というフォルダー名のindex.phpファイルに転送されるようにします。

次に、上記のルールを次のように変更する必要があります。

RewriteRule ^/?plugins/(.+)$ /yourscript.php?plugin=$1 [L]

(少なくとも1文字に一致*するようにに変更されていることに注意してください)。有効なインデックスである+限り、おそらくこれ以上ルールを追加する必要はありません。つまり、 apacheにアクセスするだけで、index.phpファイルが自動的にサーバーになります。index.php/plugins/

于 2012-07-26T00:39:55.740 に答える