Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php htaccess重写url和重定向_Php_.htaccess - Fatal编程技术网

Php htaccess重写url和重定向

Php htaccess重写url和重定向,php,.htaccess,Php,.htaccess,我想知道如何将这个urlprofile.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}

我想知道如何将这个url
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]
除了这些代码之外,my.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

在htaccess rewrite中,您实际上想要将url结构重定向到不同的url

如果您有到profile.php?user=1的链接,您必须将其更改为:
profile.php/user/1
,然后告诉您的htacess将此地址重定向到此
profile.php?user=1

您可以这样做:

RewriteRule ^user/(.*)$        index.php?&user=$1
如果您想测试一些htaccess,我将推荐此usedul站点:

更改此站点:

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]
致:

并确保页面具有绝对链接或将其添加到页面标题:

<base href="/" />


否则,您的所有链接都将被破坏。

该页面可能重复。请回答我的问题。请在此处回答“但唯一的问题是它…”???问题是什么?我想重新编写profile.php中的url?user=1到/user/1页面指向user/1,但页面上显示404错误。。有什么想法吗?@anamika第二条规则捕获以
/user/
<base href="/" />