htaccess在不改变RewriteBase的情况下重写网址而不改变rewritebase
问题描述:
试图重写几个不同的URL而不改变RewriteBase。以下网址查询:htaccess在不改变RewriteBase的情况下重写网址而不改变rewritebase
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>
答
有顺序的规则:
<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>
那么有什么不符合规则的问题? – anubhava
没有错误。用完整的htaccess编辑问题 – Klav