如何用国家名称重写URL以及国家名称后带有/的所有链接

时间:2019-06-10 10:19:50

标签: javascript php url-routing

我想用php和javascript开发一个应用程序,我想在其中提及城市名称以及网站网址,例如www.website.com/cityname,它应该打开网站www.website.com。另外,对于其他页面,它应该类似于www.website.com/cityname/pagename.php

请提供一个解决方案,如何在整个应用程序生命周期内实现这一目标以及如何维护Web URL www.website.com/cityname

我可以通过网站网址找到城市名称,但找不到页面并显示错误。

1 个答案:

答案 0 :(得分:0)

城市名称必须是该URL的一部分。

查看所用Web服务器的URL重写配置。在Apache HTTPd中,您可以定义例如重写规则。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?([^/]+)$ /index.php?city=$1 [QSA,L]

这两个条件避免了将实际规则应用于现有文件或目录。规则本身捕获的URL仅包含单个路径部分(没有/),并将它们重定向到index.php,并将城市添加为查询字符串参数。

不是PHP脚本可以检查参数。您可以将其存储在Cookie中或以HTML输出,以使用JavaScript进行访问。

将其保留在URL中比较困难。该URL必须看起来像http://example.com/cityname/。斜杠使浏览器将其识别为路径级别,因此像target.php这样的链接将被解释为http://example.com/cityname/target.php-将城市名称保留在URL中。但是您必须非常小心HTML输出中的相对和绝对链接。对于尾部的斜杠,还必须更改重写规则。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?([^/]+)/ /index.php?city=$1 [QSA,L]