Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.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用id重写_Php_.htaccess - Fatal编程技术网

Php Htaccess用id重写

Php Htaccess用id重写,php,.htaccess,Php,.htaccess,我在将我的edit.php?id=1重写为edit/id/1时遇到问题。现在,我的.htaccess文件中有以下内容: RewriteEngine On RewriteBase / RewriteRule ^edit/id/([^/.]+)$ edit.php?id=$1 [NC] 这不会更改url。有什么东西能看出我做错了什么吗?试试看,看看它对你有什么好处 <IfModule mod_rewrite.c> RewriteEngine On Rewrit

我在将我的
edit.php?id=1
重写为
edit/id/1
时遇到问题。现在,我的.htaccess文件中有以下内容:

RewriteEngine On
RewriteBase /

RewriteRule ^edit/id/([^/.]+)$ edit.php?id=$1 [NC]

这不会更改url。有什么东西能看出我做错了什么吗?

试试看,看看它对你有什么好处

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)/edit/id/([^/.]+)$ $1/edit.php?id=$2 [NC,L]
   </IfModule>

重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(+)/edit/id/([^/]+)$$1/edit.php?id=$2[NC,L]
或者,如果只有两个相同的目录,也可以这样做。将进入root.htaccess文件

  <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(profiles|customers|test)/edit/id/([^/.]+)$ $1/edit.php?id=$2 [NC,L]
       </IfModule>

重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(profiles | customers | test)/edit/id/([^/]+)$$1/edit.php?id=$2[NC,L]

您需要一个附加规则来从外部更改URL这应该放在根目录中。htaccess:

RewriteEngine On
RewriteBase /

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/([^/]+)/edit\.php\?id=([^\s&]+) [NC]
RewriteRule ^ %1/edit/id/%2? [R=302,L,NE]

RewriteRule ^([^/]+)/edit/id/([^/.]+)$ $1/edit.php?id=$2 [NC,L,QSA]

你想让它重定向到php文件吗?我想让它将我的url从
edit.php?id=1
重写为
edit/id/1
,所以你想在浏览器栏中看到的是
edit/id/1
?给我更多信息。你犯了什么错误?发生了什么事?你期望的结果是什么。我不相信这是密码,什么都没发生。
edit?id=1
未重写为
edit/id/1
。没有错误或类似的东西,我确实将确切的代码放入了.htaccess文件中。我导航到
mywebsite/edit?id=1
这不应该将url重写为
mywebsite/edit/id/1
?不,重写不是这样工作的。您应该导航到
mywebsite/edit/id/1
,服务器将在后台重写为
mywebsite/edit?id=1
。用户将永远看不到
mywebsite/edit?id=1
这就是
pretty url
的要点。刚刚导航到
mywebsite/edit/id/1
,它给了我500个内部服务器错误。好的,现在你需要检查你的apache错误日志,看看错误是什么,这样你就可以解决问题。这应该会自动重写它,对吗?但是它不存在测试url:,我的.htaccess是我们的复制粘贴。这很有效!那么,当我有其他文件夹,如:profile/edit.时,我应该怎么做呢。。客户/编辑等。