-1

グーグルでさまざまな例を調べて、次のhtaccessファイルを作成しました。

私のファイルは現在、次のルールで構成されています。

## Enable Rewrite Engine
RewriteEngine on 
Options +FollowSymlinks
RewriteBase /

## Add trailing slash to url
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]

## Rewrite URL to exclude wwww.
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

## Actual URL re-writes
RewriteRule ^profile/(.*)/? profile.php?pid=$1 [QSA,L] 
RewriteRule ^profile/(.*)/(.*)/? profile.php?pid=$1&view=$2 [QSA,L]

私が理解していることから、これはhttp://www.domain.comなどの URLをhttp://domain.comに書き換え、ディレクトリ ファイルのリストを無効にし (+FollowSymLinks)、次のような URL にスラッシュを追加します。http://domain.com/testをhttp://domain.com/test/に変更して、検索エンジンでその URL の表現が 1 つだけになるようにします。素晴らしい!しかし、私の URL は、HTML ブレッドクラムの 1 つのリンクをクリックすると、書き換えられる URL の一部を追加し続けます...

例:http:/domain.com/profile/1/shouts/pictures/all/all/all/all/all/同じリンクを連続してクリックすると... なぜこのようなことが起こるのですか? これは私を完全に狂わせている問題です!

mod rewriteチートシートとチュートリアルを読んでみましたが、どれも意味がないようです:(

編集:

(相対?) リンクで a href コードをエコーし​​ていることに注意してください。これは正しいやり方ですか?

<a href="<?php echo "profile/". $p_id."/all" ?>">All</a>

編集2:

絶対リンクも使用してみましたが、同じ問題が発生しました。私のPHPは次のよ​​うになりました:

<a href="<?php echo $websiteUrl. "profile/". $p_id."/all" ?>"> 

どこで$websiteUrl=http://domain.com/誰かアイデアはありますか?

4

1 に答える 1

0

あなたのコードはほぼ正しいですが、いくつかの小さな修正がまだ必要です。Pls はこのコードを試してください:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /

## Rewrite URL to exclude wwww.
RewriteCond %{HTTP_HOST} ^www\.(domain\.com)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=302]

RewriteCond %{REQUEST_FILENAME} -f  [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

## Add trailing slash to url
RewriteRule (?!^.*/$)^ %{REQUEST_URI}/ [L,R=302]

## Your URL re-writes
RewriteRule ^profile/([^/]+)/?$ /profile.php?pid=$1 [NC,L,QSA]

RewriteRule ^profile/([^/]+)/([^/]+)/?$ /profile.php?pid=$1&view=$2 [NC,L,QSA]

正常に動作していることを確認したら、 に置き換えR=302ますR=301R=301mod_rewrite ルールをテストしている間は (Permanent Redirect) を使用しないでください。

于 2013-06-08T07:18:49.920 に答える