3

stackoverflow に投稿された多くのソリューションを試しましたが、何もうまくいかないようです。私のサイトのいくつかの URL を、検索エンジンに適したものに書き換えたいと考えています。

次のような URL を希望します:- http://www.mysite.com/index.php?filter=accounts次のよう に表示するには:- http://www.mysite.com/accounts

ウェブ上の多くの投稿がこれを解決策として提供しています:-

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

しかし、これは何もしません。

私のサイトは Joomla CMS サイトで、.htaccess ファイル内に既にいくつかの書き換えがあります。新しい RewriteRule を間違った場所に配置している可能性がありますか?

これは、新しい RewriteRule が追加されていない完全な .htaccess ファイルです。

Options +FollowSymLinks
RewriteEngine On

# prevents people from accessing anything with phpMyAdmin
RewriteRule phpMyAdmin - [F]

# force canonical www if request is for non-www or has port number etc
RewriteCond %{HTTP_HOST} !^(www\.mysite\.com)?$
RewriteRule (.*) http://www.mysite.com/$1 [R=301,L]

RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]
RewriteBase /
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} (/[^.]*|\.(php|html?|feed|pdf|raw))$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

どんな助けでも大歓迎です。:-)

4

1 に答える 1

3

更新しました

今テストされています。これを試して:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9-=_?]+)/?$ index.php?filter=$1 [L] 

.htaccessはルート ディレクトリに入ります。

要求された URL はhttp://www.mysite.com/accounts/ですが、 http://www.mysite.com/apples/のように何でもかまいません。

注: アドレス バーに表示される URL は、そのアドレス バーに入力された URL です。http://www.mysite.com/index.php?filter=accountsではないと思います。なぜなら、リダイレクトの目的は、より使いやすいものに置き換えることだと思うからです ( http://www.mysite.com/accounts )、これはアドレス バーに入力する必要があるものであり、その逆ではありません。少し混乱しますが、意味があることを願っています。

テストするには、ルート ディレクトリの index.php に次のコードのみを含めます。

<?php 

if ($_GET['filter'] == 'accounts') {
echo "This is Accounts<br /><br />";    
}else {
echo "This is INDEX<br /><br />";       
}

?>

書き換えルールを .htaccess 内のどこに配置すればよいかわかりませんでした。実際のルールの前後に試してみる必要があると思います。

于 2012-11-27T21:09:58.630 に答える