最近、。htaccessファイルを更新して、URLの。php拡張子を非表示にしました。 domain.com/indexにアクセスしようとすると、phpファイルが表示されます。
domain.com/index.phpと入力すると、domain.com/indexURLにリダイレクトされ、.phpが表示されます。ファイルも。
セキュリティ上の理由から、他のすべての拡張子を拡張子なしのURLにリダイレクトして、.phpファイルを表示したいと思います。私の問題は、。html .aspのようなよく知られた拡張子をリダイレクトするように。htaccessを設定できないことです。 aspx .shtmlなどを非拡張子URLに追加し、.phpファイルをコンテンツとして表示します。
私の.htaccessファイルは次のようになります。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# php extension to no extension url
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.php $1 [R=301,L]
# no extension to the .php file
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
# this is for the index
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
.htaccessファイルでこれらを試して、サーバーで書き換えエンジンがオンになっていて、httpd.confであるメインのApacheconfファイルにmod_rewrite.cモジュールがあるかどうかを確認してください。
1. RewriteRule ^ about $ about.php [L] OR 2. RewriteCond%{REQUEST_FILENAME}のRewriteEngine!-d RewriteCond%{REQUEST_FILENAME} .php -f RewriteRule ^(。*)$ $ 1.php
これらがうまく機能することを願っています。
または、それ以外の場合、これはすべての説明を含む別のオプションです。
Apacheリライトルールオプション+ FollowSymLinks RewriteEngine On RewriteBase /
RewriteCond%{REQUEST_FILENAME}!-f RewriteCond%{REQUEST_URI}!(。[a-zA-Z0-9] {1,5} |/|#(.))$ RewriteRule ^(。 )$ $ 1/[R = 301、L]
RewriteCond%{REQUEST_FILENAME}!-d RewriteCond%{REQUEST_FILENAME} .php -f RewriteRule ^([^。] +)/ $ $ 1.php
あなたが知りたいと思うこと:
これは、すべてのリクエストがindex.phpを介して強制されるフロントエンドコントローラーを使用しないサイト向けです。それが必要な場合は、3番目のブロックを独自のブロックに置き換える必要があります。
この例は、.phpのみで示されています。たとえば.htmlで使用する場合は、3番目のブロックをコピーして貼り付け、(1、)3、4行目の「.php」を「.html」に置き換える必要があります(誰かがそれをうまく行う方法がない限り) ?)
「example.com/something/」のコンテンツは、「example.com/something.php」または「example.com/something/index.php」から提供できます。
他のページにリンクするには、href =”/some/things /”またはhref =” // example.com/some/thing/”だけです。
.cssと.jsを使用して、href =”/style.css”またはhref =”/folder1/style.css”にします。それ以外の場合、「example.com/folder2/file.php」からhref =” style.css”を実行すると、「example.com/folder2/style.css」が表示されます。
注:すべてのexample.comの前にhttp://があります。
他に「。」がない場合拡張子以外のファイルで、「。php」を任意の文字列に置き換えてみましたか?
# php extension to no extension url
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.\s+\sHTTP/.+
RewriteRule ^(.+)\.php $1 [R=301,L]
以下のコードを試して、非表示にしたい拡張子を変更してください。
1.htmlファイルの場合
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [L]
2.phpファイルの場合
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]