0

一部のパラメーターを美しいリンクに書き換えようとしていますが、サブドメイン/フォルダーのみ. 残念ながら、私はそれを機能させることができません。おそらく、以前に他の書き直しがいくつかあったためです...

私のコードは次のとおりです。

<IfModule mod_rewrite.c>
# NON-WWW TO WWW
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

# WORDPRESS-BLOG
Options +FollowSymlinks
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# REDIRECT FOR SUBDOMAIN
RewriteCond %{HTTP_HOST} ^subdomain.example.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+)(?:/)?$ index.php?cshort=$1 [L]
RewriteRule ^([^/.]+)/([^/.]+)(?:/)?$ /index.php?cshort=$1&cid=$2 [L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)(?:/.*)?$ /index.php?cshort=$1&cid=$2&step=$3 [L]
</IfModule>

基本的に最後の部分だけが、URLを次のようなものから変更するために書き直したいものです

http://subdomain.example.com/index.php?cshort=abc&cid=123&step=1http://subdomain.example.com/abc/123/1

www.example.com の他の書き換えルールは影響を受けません。残念ながら、私の現在のコードは、ブログと www の最初の 2 つのルールしか実行しませんが、サブドメインでは何も起こりません。私のコードで何が問題になっていますか?

4

1 に答える 1

1

http://subdomain.example.com/index.php?cshort=abc&cid=123&step=1から書き換えたいと言うときはhttp://subdomain.example.com/abc/123/1、ユーザーにきれいな URL を入力してもらい、バックグラウンドで完全な URL を提供してもらいたいという意味であり、醜い URL からきれいな URL にリダイレクトしたいという意味ではありませんよね?

RewriteRules で、" (?:/)?" を使用して何を達成しようとしていますか? 書かれているように、それは私には意味がありません。ディレクトリ パスがスラッシュで終わるかどうかを一致させようとしているだけの場合は、次のように実行できます。

RewriteRule ^([^/.]+)/?$ index.php?cshort=$1 [L]

編集:追加の提案:

  1. 「サブドメインへのリダイレクト」セクションを「Wordpress ブログ」セクションの上に移動します。Wordpress ルールは、「ドメインに関係なく、実際のファイルやディレクトリではないすべてのもの」に適用されるため、最後に配置する必要があります。

  2. RewriteConds は、それに続く単一の RewriteRule にのみ適用されます。「サブドメインのリダイレクト」の下にリストした 3 つのルールのそれぞれについて、上記の提案に従って更新した後、RewriteRule の前に 2 つの RewriteCond 行を繰り返す必要があります。

于 2013-02-10T17:43:04.617 に答える