0

GoDaddy Linux ホスティングでは、この mod の書き換えを機能させたいと思っていますが、奇妙な問題があります。非常に単純なコードは次のようになります。

Options +FollowSymLinks -MultiViews
rewriteengine on
RewriteBase /

## clean URLs
RewriteRule ^blog/([^/.]+)/?$ blog.php?title=$1 [L]

次に、テストとして、blog.php?title=testing想定どおりに実行し、URLをに書き直しましたblog/testing。しかし、その後blog.php?title=testorに行ったときにblog.php?title=newURL が書き換えられなかったのでblog/testblog/newand に行ってみたところ、404 エラーが発生しました。何かが壊れたかと思った。それで私はに戻りblog.php?title=testing、すべてが再び機能しました。そのため、最初に入力した URL に対してのみ機能しました。

また、ルートの下のフォルダーにこのドメインを設定しています。root はあるexample.comが、このサイトはexample.com/somethingGoDaddy によって に変換されsomething.comます。

クリーンな URL が必要です。クエリ文字列で php を使用できるようにし$_GETたいのですが、次のような素敵な seo URL が必要です。example.com/blog/title

4

1 に答える 1

1

最初のルールは、php ファイルをプリティ URL にリダイレクトする必要があります。2 番目のルールは、プリティ URL を古い URL に内部的にリダイレクトする必要があるため、ユーザーには表示されません。

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

# Redirect /blog.php?title=anything to /blog/anything
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+blog\.php\?title=([^\s&]+)&? [NC]
RewriteRule ^ /blog/%1? [R=302,L]

# Internally forward /blog/anything to /blog.php?title=anything
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^blog/([\w-]+)/?$ /blog.php?title=$1 [L]
于 2013-08-12T21:53:39.500 に答える