2016-08-04 14 views
1

RewriteBaseを変更せずにいくつかの異なるURLを書き直そうとしています。クエリでは、次のURL:htaccess書き換えベースを変更せずにかなりのURLを書き換えます

http://example.com/directory1/directory2/job?id=100 
http://example.com/directory3/directory4/profile?id=200 

になるでしょう:

http://example.com/directory1/directory2/job/100 
http://example.com/directory3/directory4/profile/200 

現在のルール:

RewriteRule ^directory1/directory2/job/([0-9]+)$ ./directory1/directory2/job?id=$1 [L,QSA] 

RewriteRule ^directory3/directory4/profile/([0-9]+)$ ./directory3/directory4/profile?id=$1 [L,QSA] 

全htaccessファイル:

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
     Options +FollowSymLinks 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes... 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 

    RewriteRule ^directory1/directory2/job/([0-9]+)$ ./directory1/directory2/job?id=$1 [L,QSA] 

    RewriteRule ^directory3/directory4/profile/([0-9]+)$ ./directory3/directory4/profile?id=$1 [L,QSA] 

</IfModule> 
+0

問題のルールではうまくいかないのはなぜですか? – anubhava

+0

エラーはありません。完全なhtaccessで質問を編集する – Klav

答えて

1

がこの順序であなたの規則があります。

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
     Options +FollowSymLinks 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    RewriteCond %{THE_REQUEST} (/directory1/directory2/job)\?id=([^\s&]+) [NC] 
    RewriteRule^/%1/%2? [R=302,L,NE] 

    RewriteCond %{THE_REQUEST} (/directory3/directory4/profile)\?id=([^\s&]+) [NC] 
    RewriteRule^/%1/%2? [R=302,L,NE] 

    RewriteRule ^(directory1/directory2/job)/([0-9]+)$ $1?id=$2 [L,QSA] 

    RewriteRule ^(directory3/directory4/profile)/([0-9]+)$ $1?id=$2 [L,QSA] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 

</IfModule> 
+0

これをフォローアップしてくれてありがとう。私はまだ何も得ていないし、エラーもない。他の条件やルールを追加するだけでうまくいきます。クエリ文字列を定義する必要はありますか? – Klav

+1

更新されたルールを試してください。 – anubhava

+0

$ _GETにアクセスできない、私はそれが再び注文だと思ったが、助けにならなかった – Klav