1

私はウェブサイトを持っていて、次のようにリンクしています:

a href="?lang=en&p=3"

私のURLは次のようなものです:

http://www.mywebsite.com/?lang=en&p=3

しかし、私は自分のURLを次のようにしたい:

http://www.mywebsite.com/english/about-us

私はあなたがこのようなものを持っていることを知っています:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([a-zA-Z]+)/([0-9]+)/$ ?lang=$1&p=$2

しかし、それは機能していません...

.htaccess誰かがこのファイルを手伝ってくれませんか?

また、href の URL も変更する必要がありますか?

前もって感謝します!

敬具

4

2 に答える 2

2

次のようなものを試してください:

RewriteCond %{QUERY_STRING} ^lang=([a-zA-Z]*)&p=(.*)$
RewriteRule ^(.*)$ /%1/%2? [R=301,L]



これにより、http://www.mywebsite.com/?lang=en&p=3 からhttp://www.mywebsite.com/en/3
へ の 301 リダイレクトが行われ
ます。

リダイレクトに他のルールが必要な場合は、必要に応じてそのルールを変更します。たとえば、RewriteCondそのルールでより具体的なリストを作成します。

于 2012-11-27T15:10:43.927 に答える
1

サイトで p=3 のようなパラメータが必要な場合は、ハードコードされたページ名でこれを使用します

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/about-us$ ./?lang=$1&p=3 [QSA]
RewriteRule ^(.*)/another-page$ ./?lang=$1&p=4 [QSA]
</IfModule>

p=about-us のようなパラメーターを受け入れるようにサイトを変更すると、より簡単になります。

( http://www.mywebsite.com/?lang=en&p=about-us )

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/(.*)$ ./?lang=$1&p=$2 [QSA]
</IfModule>

href の URL も変更しないと、Google は平文の URL を表示しない (誰も表示しない) ため、意味がありません。

于 2012-11-27T15:15:55.283 に答える