【发布时间】:2011-06-08 12:21:07
【问题描述】:
我有一个网站,可以将一些 GET 变量传递到 PHP 中的不同页面。我的问题是现在我有一个带有变量的 url,即 index.php?category=categoryname,这不是很难忘。
有什么方法可以将 URL 更改为 /categoryname 之类的东西,而无需复制页面并存储在文件夹中?但也允许用户输入 /categoryname 并被重定向到正确的页面?
【问题讨论】:
我有一个网站,可以将一些 GET 变量传递到 PHP 中的不同页面。我的问题是现在我有一个带有变量的 url,即 index.php?category=categoryname,这不是很难忘。
有什么方法可以将 URL 更改为 /categoryname 之类的东西,而无需复制页面并存储在文件夹中?但也允许用户输入 /categoryname 并被重定向到正确的页面?
【问题讨论】:
.htaccess Apache mod_rewrite,几乎每个专业的动态网站都使用这种方法(如stackoverflow)。
该方法在this article 中得到了充分的解释,比我在这个答案框中解释的要好得多。
【讨论】:
您应该考虑在 .htaccess 文件中编写一些 apache Mod_Rewrite 规则。
【讨论】:
解决方案讨论here:
这是由 apache 的 rewrite 模块完成的,它处理常规的 表达式。你必须制定一个规则 像这样在你的 .htaccess 文件中 您网站的根目录:
重写规则 ^cat/([0-9]+)$ /index.php?category=$1
^ 表示 url 之后的开始 www.example.com/ $ 表示结束 页面。
www.example.com/cat/123
将被服务器转换为:
www.example.com/index.php?category=123
在 PHP 中你使用普通的 $_GET['id'] 多变的。重写模块必须是 由 apache 启用...这主要是 用于制作url格式 独立于服务器端 脚本语言,所以 .php 在 网址不合逻辑。这就是为什么我 将其更改为 product/ 。 .htaccess 以
开头RewriteEngine On 选项 +FollowSymLinks RewriteBase / 这里所有的重写规则.. ...
【讨论】: