如何解决从网址中删除文件名,并在网址中保留2个GET变量?
我正在开发一个网站,需要在该网站上创建特定的URL结构...那么如何制作此URL:
http://example.com/index.php?city=mumbai&place=chembur
对此:
http://example.com/mumbai/chembur
有可能吗?
编辑:
我尝试在htaccess文件中使用以下代码,但显示空白页面
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteRule !/$ %{REQUEST_URI}/ [L,R=301]
# RewriteCond %{REQUEST_FILENAME} -f [OR]
# RewriteCond %{REQUEST_FILENAME} -d
# RewriteRule ^ - [L]
# RewriteRule ^([^/]+)/([^/]+)/?$ index.php?city=$1&place=$2 [L,QSA]
# RewriteRule ^([^/]+)/?$ index.php?city=$1 [L,QSA]
编辑:我选择@AbsoluteBeginner答案,因为它的代码更少且错误为0。我知道这不是URL重定向,但可以解决我的问题。
还,谢谢@CallofDev的帮助!
解决方法
在这里,我们必须分别处理规则,以便在您只有一个或两个变量的情况下获得特定的url。在您的情况下,您为同一规则分配了条件,因此不起作用。因此,我们为两种URL格式定义了条件。如果仅传递了city的值,则第一个规则将起作用,而仅当两个值均被传递时,另一个规则将起作用。在这里,此链接将帮助您了解如何https://htaccess.madewithlove.be?share=1fe76858-2b15-5848-bbbe-32e55b692e1e检查规则。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ index.php?city=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?city=$1&place=$2 [L]
,
您可以使用一个简单的PHP Router。
.htaccess
FallbackResource index.php
index.php
$path = explode('/',$_SERVER['REQUEST_URI']);
$city = $path[1]; // mumbai
$place = $path[2]; // chembur
// Do what you want with those two variables (database query or include a file).
这将使您完全控制url结构。这不是URL重写,而是另一种方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。