问题描述
我正在开发一个网站,需要在该网站上创建特定的URL结构...那么如何制作此URL:
http://example.com/index.PHP?city=mumbai&place=chembur
对此:
http://example.com/mumbai/chembur
有可能吗?
编辑:
# 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重写,而是另一种方法。