1

SEO目的でURLを書き換えようとしています。

古い URL は次のとおりです。

http://www.domain.net/index.php?p=beer

新しい URL は次のようになります。

http://www.domain.net/beer

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

RewriteRule ^([^/\.]+)/?$ index.php?p=$1

何時間もの調査の後でも、なぜこれが機能しないのかわかりません:(

完全な .htaccess は次のとおりです。

RewriteEngine on 
RewriteCond %{HTTP_USER_AGENT} Teoma
RewriteRule ^.* - [F]
rewritecond %{HTTP_HOST} !^www\.domain\.net$ [NC]
rewriterule ^(.*)$ http://www\.domain\.net/$1 [R=301,L]

RewriteCond %{QUERY_STRING} ^p=uppic$
RewriteRule ^index\.php$ /? [L,R=301]

RewriteRule ^([^/\.]+)/?$ index.php?p=$1

# Pwd service

AuthType Basic
AuthName "Service"
AuthUserFile /xxxx/www/xxxxxx/xxxxx/xxxxxx/.htpasswd


<Files admin.php>
Require user xxxxxxx
</Files>

Options -Indexes

前もって感謝します!


このコードに対する私の最後の質問は次のとおりです。

RewriteRule ^([^/\.]+)/?$ index.php?p=$1

作業を行います:

http://www.domain.net/beer

そしてビールはそのページを参照しています:

http://www.domain.net/index.php?p=beer

これは素晴らしいです!しかし、ビールの後ろに / を置いた場合、例えば:

http://www.domain.net/beer/

私のbeer.phpファイルは別のパスで実行されるため、css、画像、jsなどは含まれていません。html をhttp://www.domain.net/style.cssに変更せずに修正する方法はありますか?

4

2 に答える 2

0

RewriteCondクエリ文字列の一部をキャプチャする場合は、 with を使用する必要がありますQUERY_STRING

RewriteEngine On
RewriteCond %{QUERY_STRING} p=(.+)
RewriteRule ^/?index.php$ /%1? [R,L]

これにより、クライアントが新しい URL にリダイレクトされますhttp://www.domain.net/beer

于 2013-03-05T01:23:34.177 に答える
-1

これを試しましたか:?

^([^/\.]+)\/?$

それ以外の場合は、他のものなしで .htacces を試します。

ただ:

RewriteEngine On
RewriteBase /
RewriteRule ^([^/\.]+)\/?$ index.php?p=$1
于 2013-03-04T23:22:40.130 に答える