0

しばらくの間 mod_rewrite に苦労してきました。

私の CMS は post.php?s= を使用してブログ記事の URL を生成します。URL のこの部分を削除して、見栄えがよく、ユーザー フレンドリーになるようにしています。これが私のmod_rewriteです:

<ifModule mod_rewrite.c>

DirectoryIndex index.php index.html

ErrorDocument 404 http://tempertemper.net/error.php

RewriteEngine On

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

RewriteCond %{HTTP_HOST} ^www.tempertemper\.net$
RewriteCond %{REQUEST_URI} !cron.php
RewriteRule ^(.*)$ http://tempertemper.net/$1 [R=301,L]

RewriteCond %{QUERY_STRING} ^s=(.+)$
RewriteRule post.php /%1? [R=301,L]

RewriteRule ^resources /archive? [R=301,L]

RewriteCond %{REQUEST_URI} !post.php
RewriteRule ^([a-zA-Z0-9_-]+)$ post.php?s=$1

</ifModule>

残念ながら、見つからないすべてのページを error.php ページではなく空白の post.php ページに誘導しているようです。

私のサイトはここにあります: http://tempertemper.netそしてここに存在しない URL がありますhttp://tempertemper.net/this-url-does-not-exist

http://tempertemper.net/errorに移動します。

ご覧いただきありがとうございます:)

4

1 に答える 1

0

パターンに適合するすべてのパスをリダイレクトしているため[a-zA-Z0-9_-]+、これは post.php スクリプトにクエリ文字列を送信するだけs=this-url-does-not-existです。したがって、存在するかどうかを確認するのは PHP スクリプト post.php に任されthis-is-not-a-urlています。

補足として、/blog/2012-08-24-whatever訪問者に提供するパスとしては、 ではなく を使用することをお勧めします/2012-08-24-whatever/imagesこうすることで、新しいユーティリティ パスを作成する必要があるたびに .htaccess ファイルに新しい例外を書き込む必要がないなど、他の関数のパスを予約できます。

于 2012-08-24T18:22:12.633 に答える