我想知道如何将此网址profile.php?user=1
重写为/user/1
。
我知道这可以通过.htaccess来完成。这是我尝试过的,它工作正常,但唯一的问题是它
RewriteCond %{THE_REQUEST} \s/+profile\.php\?user=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ profile.php?user=$1 [L,QSA]
除了这些代码,我的.htacces也有这些代码
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.*$ [NC]
RewriteRule \.(gif|jpg|png)$ http://www.domain.com [L]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
ErrorDocument 404 /error404.php
ErrorDocument 403 /error404.php
Options -Indexes
RewriteCond %{THE_REQUEST} \s/+page\.php\?pagename=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /page.php?pagename=$1 [L,QSA]
请告诉我,我的.htaccess页面是否正确。我不擅长htaccess
答案 0 :(得分:1)
改变这个:
RewriteCond %{THE_REQUEST} \s/+profile\.php\?user=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ profile.php?user=$1 [L,QSA]
为:
RewriteCond %{THE_REQUEST} \s/+profile\.php\?user=([^\s&]+) [NC]
RewriteRule ^ /user/%1? [R=302,L]
RewriteRule ^user/([^/]+)/?$ profile.php?user=$1 [L,QSA]
确保页面有绝对链接或将其添加到页面标题中:
<base href="/" />
否则,您的所有链接都将被破坏。
答案 1 :(得分:0)
在htacess重写中,您希望实际上将url结构重定向到不同的URL
如果您有指向profile.php?user = 1的链接,则必须将其更改为:profile.php/user/1
然后告诉您的htacess将此地址重定向到此profile.php?user=1
你可以这样做:
RewriteRule ^user/(.*)$ index.php?&user=$1
如果您想测试一些htaccess,我会重新定位这个usedul网站:http://htaccess.madewithlove.be/