Apache htaccess在不更改rewritebase的情况下重写漂亮的url
试图重写几个不同的URL而不更改重写基。包含查询的以下URL:Apache htaccess在不更改rewritebase的情况下重写漂亮的url,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,试图重写几个不同的URL而不更改重写基。包含查询的以下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 现
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]
完全访问:
<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>
选项-多视图
选项+FollowSymLinks
重新启动发动机
#重定向尾部斜杠。。。
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
重写规则^directory1/directory2/job/([0-9]+)$。/directory1/directory2/job?id=$1[L,QSA]
重写规则^directory3/directory4/profile/([0-9]+)$。/directory3/directory4/profile?id=$1[L,QSA]
将规则按以下顺序排列:
<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>
选项-多视图
选项+FollowSymLinks
重新启动发动机
#重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)/$/$1[L,R=301]
RewriteCond%{u请求}(/directory1/directory2/job)\?id=([^\s&]+)[NC]
是否重写规则^/%1/%2?[R=302,长,东北]
RewriteCond%{u请求}(/directory3/directory4/profile)\?id=([^\s&]+)[NC]
是否重写规则^/%1/%2?[R=302,长,东北]
重写规则^(directory1/directory2/job)/([0-9]+)$$1?id=$2[L,QSA]
重写规则^(目录3/目录4/profile)/([0-9]+)$$1?id=$2[L,QSA]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
那么,哪些规则不适用?没有错误。完整编辑问题谢谢您的跟进。我仍然一无所获,也没有错误。加上其他条件和规则,效果很好。我需要定义一个查询字符串吗?$\u GET不可访问,我还以为它是顺序,但这没有帮助,它实际上是一个directory1/directory2/job.php
文件?您是否也在使用一些框架,如WP/Joomla等?使用Laravel,因此这是一条路线/bladeI我不熟悉Laravel,但我怀疑Larael的前端控制器不喜欢内部重写规则修改$\u GET
,就像WP/Joomla等一样。