2

Mod_Rewrite を使用して URL の末尾にスラッシュを追加する方法を知りたいですか?

これは現在私の .htaccess ファイルです:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ index.php?pageName=$1

私のURLは次のように表示されます:

wwww。****** .com/ページ名

私はそれを次のように表示したい:

wwww。****** .com/ページ名/

URL は内部で GET リクエストを保持していますが、本物のディレクトリのように見せたいです。

4

2 に答える 2

6

クライアントに表示される URL に末尾のスラッシュを簡単に追加できますが、ブラウザをリダイレクトした後に取得するリクエストの末尾のスラッシュを考慮する必要があります。

したがって、リダイレクトは次のようになります。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

そして、あなたはそれを上にしたいでしょう:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ index.php?pageName=$1

へのルーティングの前にリダイレクトを行う必要があるためindex.phpです。ブラウザが で終わる URL にリダイレクトされる場合、ルールには末尾にスラッシュが付いた pageName パラメータが含まれることに注意/index.phpてください

于 2012-10-04T09:10:36.657 に答える
0

これが古いことは知っていますが、それを見つけた他の人にとってはまだ役に立ちます。

ジョン・リンの答えは正しいです。これをコメントとして追加しますが、十分な評判がありません。

OPは、末尾のスラッシュを削除することについてコメントしています。末尾に常にスラッシュがあることがわかっているため、$pageName = substr($pageName, 0, -1);. 少なくとも私はそうしています。

これが役に立つことを願っています。

于 2014-01-10T02:38:30.753 に答える