2017-08-31 1 views
2

私は現在Wordpressのインストールのルートフォルダにホストされている静的なHTMLファイルを持っています。私は、URL http://example.com/er_trends_downloadへのアクセスが、末尾のスラッシュがURLに追加されたときに内部サーバーエラーを取得することができます。http://example.com/er_trends_download/htacessはWordpressのルート内でホストされている静的なHTMLにリダイレクトします

私は、静的なファイルやワードプレスの私のパーマリンク設定されているから.htmlをドロップする.htaccessファイルに行を追加しました後続のスラッシュもドロップするように設定します。私は末尾のスラッシュを維持することに優先順位を持っていない、私はちょうどそれがURLの一部であるかどうか内部サーバーのエラーを取得しないようにしたいと思います。私は以下の私の完全な.htaccessファイルを含めました:(。例えばhttp://example.com/er_trends_download/

# Use PHP5.6 as default 
AddHandler application/x-httpd-php56 .php 

php_value memory_limit 512M 

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC] 
RewriteRule^/%1 [NC,L,R] 
RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule^%{REQUEST_URI}.html [NC,L] 
</IfModule> 


# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

答えて

0
RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule^%{REQUEST_URI}.html [NC,L] 

このコードの問題は、要求がスラッシュで終わるときにREQUEST_FILENAMEサーバー変数がないということです末尾のスラッシュは含まれませんが、REQUEST_URI変数が含まれます。だから、/er_trends_download/.html(明らかに間違っています)に書き直してしまいますが、書き換えループ... /er_trends_download/.html.html/er_trends_download/.html.html.htmlなどになり、最終的にサーバが500エラーで壊れます。

は、代わりに次のことを試してみてください。

RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule ^(.+?)/?$ /$1.html [L] 

これは、末尾には、オプションのスラッシュと(1がある場合)非貪欲パターン.+?は、我々はすべてをつかむ保証しますが、含めない、末尾のスラッシュます。ここではNCフラグは必要ありません。

これにより、末尾にスラッシュが付いていてもいなくてもURLが許可されます(これは望ましい場合とできない場合があります)。

+0

ありがとうございました!これはトリックでしたが、コード提案の.phpを.htmlに変更するだけでした。 あなたの回答にこの編集を加えることができれば、私はそれを受け入れたものとしてマークします。 – SRouse

+0

ようこそ。申し訳ありません、はい、 '.php'は習慣の力でした(今更新されました)! – MrWhite

関連する問題