0

まず、これにはいくつかの疑問があることを知っていますが、私が経験したことは、このルールが機能しない間に .php 拡張子を削除するなど、他のルールが機能することです。

RewriteRule ^hello$ marketplace [NC,R=301]

これは単純なテストであり、機能していません。URL は引き続きマーケットプレイスであり、hello ではありません。そして、私が持っている他のすべてのルールを削除しようとしましたが、上記のルールが htaccess ファイルに存在する唯一のものになりましたが、それでも機能しません。

何か案は?他のルールが機能するため、mod_rewrite は明らかにオンになっています。

テスト済みで動作していません:

RewriteRule ^marketplace$ /hello [NC,R=301]
4

1 に答える 1

1

この「Apache mod_rewrite Introduction」を読むことを強くお勧めします

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*)\.php [NC]
RewriteRule ^ /%1 [R=301,QSA,L]

# Redirect to hello
RewriteRule ^marketplace$ /hello [R=301,NC,L]
# Show the content of marketplace on hello
RewriteRule ^hello$ /marketplace.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^([^/]+)/?$ $1.php [L]

上記は、完全にテストされ、機能するルールです。

最初のルールは.php、URL のようなディレクトリにリダイレクトされます。たとえば、domain.com/marketplace.phpになりdomain.com/marketplaceます。

2 番目のルールは にリダイレクトさmarketplacehelloます。

3 番目のルールは に内部的にリダイレクトさhelloれるmarketplace.phpため、URL はhelloのコンテンツのままになりますmarketplace.php

最後のルールは、ディレクトリが存在しないことを確認しますが、php ファイルとして存在し、内部的にそこにリダイレクトします。

したがって、アクセスmarketplace.phpするとmarketplacethenhelloに移動し、hello から のコンテンツが表示されますmarketplace.php

marketplace.php存在しない場合は、404 エラーが発生します。

于 2013-09-01T09:37:49.587 に答える