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.时,我应该怎么做呢。。客户/编辑等。