2016-04-15 15 views
1

.phpで終わるすべてのURLを非拡張バージョンにリダイレクトする301必要があります。しかし、書き換えルールは、以下の既存のルールで動作する必要があります。htaccess複数のスラッシュを含むURLから.php拡張子を削除します

# ==== REWRITE URLS ==== 
RewriteEngine On 
# pass through root 
RewriteRule ^(index\.php|Sitemap\.xml)?$ - [L] 
# no more/so add extension 
RewriteCond $1 !/ 
RewriteCond $1 !\.php$ 
RewriteCond ${REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /$1.php [L] 
RewriteCond %{REQUEST_URI} !\.php$ 
RewriteRule ^(_assets|_css|_fonts|_includes|_scripts)($|/) - [L] #exclude these folders using the 'last: L' flag 
RewriteRule ^(.*)/(.*)$ /$1-$2 [L] 

これはこの質問hereの拡張です。

ので、望ましい結果は次のとおりです。

domain.com/region/brand/more-content-here.php 

はに永続的にリダイレクトします:

domain.com/region/brand/more-content-here 

しかしで実際のファイルを取り出す:

domain.com/region-brand-more-content-here.php 

は、いくつかのさまざまなアイデアを試みたが、彼らはdidnの既存のルールではうまく動作していないようで、htaccessは私の強みではありません。また、それはクエスチョンのフレンドリーである必要があります。どんな助けもありがとう。

答えて

1

は拡張子.phpを削除するには、使用することができます。

RewriteEngine on 

#1)Permanently redirect "foo.php" to "/foo"# 
RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC] 
RewriteRule^/%1 [NE,L,R=301] 
#2)Rewrite "/foo" to "/foo.php"# 
#this will internally redirect file to file.php# 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule^%{REQUEST_URI}.php [L] 
+1

パーフェクト!ありがとうございました。 #2はすでに既存のルールでカバーされていたので、私が必要としたのはステップ1でした。 – Dodo

1

の作業コード:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
関連する問題