使url在.htaccess文件中重写以双向工作
我有以下.htaccess文件:使url在.htaccess文件中重写以双向工作,.htaccess,url-rewriting,.htaccess,Url Rewriting,我有以下.htaccess文件: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^project/([0-9]+)/([a-zA-Z0-9]+)/(.+)?$ project.php?id=$1&pName=$2&urlPram=$3 [L,NC] </
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^project/([0-9]+)/([a-zA-Z0-9]+)/(.+)?$ project.php?id=$1&pName=$2&urlPram=$3 [L,NC]
</IfModule>
一切正常。但我也希望当url以另一种格式键入时,被重写为第一种格式。
i、 e.当我像这样键入url时:
mysite.com/project.php?id=1&pName=test&urlParam=vw
我想把它变成:
mysite.com/project/1/test/vw
我必须写另一条规则吗?还是通过其他方式完成的?当前的重写规则无法处理这两种情况。同时添加下面的重写规则
RewriteEngine On
RewriteBase /mysite/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^project/([0-9]+)/([a-zA-Z0-9]+)/(.+)?$ project.php?id=$1&pName=$2&urlParam=$3&no-redir [L,NC,QSA]
RewriteCond %{QUERY_STRING} !no-redir
RewriteCond %{QUERY_STRING} (^|&)id=([^&]+)&pName=([^&]+)&urlParam=([^&]+)
RewriteRule ^project\.php$ project/%2/%3/%4? [R=301,L,NC]
您还需要一个外部重定向规则。使用此代码:
<IfModule mod_rewrite.c>
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{THE_REQUEST} /project\.php\?id=([^&]+)&pName=([^&]+)&urlPram=([^&\s]+) [NC]
RewriteRule ^ project/%1/%2/%3? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^project/([0-9]+)/([a-zA-Z0-9]+)/(.+)?$ project.php?id=$1&pName=$2&urlPram=$3 [L,NC,QSA]
</IfModule>
选项+以下符号链接-多视图
重新启动发动机
重写cond%{THE_REQUEST}/project\.php\?id=([^&]+)&pName=([^&]+)&urlPram=([^&\s]+)[NC]
是否重写规则^project/%1/%2/%3?[R=301,L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^project/([0-9]+)/([a-zA-Z0-9]+)/(.+)?$project.php?id=$1&pName=$2&urlPram=$3[L,NC,QSA]
所以当有人键入urlmysite.com/project.php?id=1&pName=test&urlParam=vw
?@putvande时,你想要重定向,我不知道这是否是我需要的重定向。我的意思是,同一个物理php文件将为这两个url提供服务,我只是不希望url以这种格式出现在地址中,这导致url为:mysite.com/project/1/test/vw?id=1&pName=test&urlParam=vwUseproject/%2/%3/%4?
注意末尾的?
。同样的问题,在localhost中,我键入:localhost/mysite/project.php?id=1&pName=test&urlParam=vw
并将其转换为:localhost/C:/xampp/htdocs/mysite/project/1/test/vw?id=1&pName=test&urlParam=vw
请注意,mysite.com/project.php?id=1&pName=test&urlParam=vw
的结构与http://localhost/mysite/project.php?id=1&pName=test&urlParam=vw
不同之处在于mysite
文件夹在/project.php
段之前。对不起,我想我应该提到子文件夹。谢谢你抽出时间。上面的答案符合我的要求。
<IfModule mod_rewrite.c>
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{THE_REQUEST} /project\.php\?id=([^&]+)&pName=([^&]+)&urlPram=([^&\s]+) [NC]
RewriteRule ^ project/%1/%2/%3? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^project/([0-9]+)/([a-zA-Z0-9]+)/(.+)?$ project.php?id=$1&pName=$2&urlPram=$3 [L,NC,QSA]
</IfModule>