如何使用 .htaccess 重写 URL 而不会影响 $GET 数据
Posted
技术标签:
【中文标题】如何使用 .htaccess 重写 URL 而不会影响 $GET 数据【英文标题】:How do I rewrite URL using .htacess without consequences for $_GET data 【发布时间】:2016-06-03 13:43:06 【问题描述】:我想用一些 $_GET 数据更改我的 URL,例如:
http://www.website.com/articles.php?article=article_title_stored_in_database
http://www.website.com/simple_page.php?page=page_title_stored_in_database
让它们看起来像这样:
http://www.website.com/articles/article_title_stored_in_database/
http://www.website.com/pages/page_title_stored_in_database/
另一个问题:如果我更改了其中包含 $_GET 数据的 URL,更改后是否可以访问它们?所以如果地址是:
http://www.website.com/articles/article_title_stored_in_database/
变量 $_GET['article'] 将返回 'article_title_stored_in_database' ? 谢谢。
【问题讨论】:
相同的 URL 结构不能同时转发到 2 个不同的 PHP 文件 是否意味着文件夹“内容”只能用于articles.php或simple_page.php? 您可以为 2 个不同的 php 文件使用 2 个不同的前缀,/content
不必是一个真正的文件夹。
谢谢。我编辑了问题
我在您编辑后在下面发布了一个答案:)
【参考方案1】:
您可以在 DOCUMENT_ROOT/.htaccess
文件中使用这些规则:
Options -MultiViews
RewriteEngine On
RewriteRule ^articles/([^/]+)/?$ articles.php?article=$1 [L,QSA,NC]
RewriteRule ^pages/([^/]+)/?$ simple_page.php?article=$1 [L,QSA,NC]
【讨论】:
非常感谢。 .htaccess 文件是我理解的外星技术。我希望它工作正常。即使我将 AllowOverride 设置为 All,它也不能在我的 Xampp Apache 服务器上运行。但我相信它会在hostinig上运行良好。再次感谢您的帮助! :) 它没有。我认为这是一个xampp问题。我现在对 xampp 有很多问题,例如,方法 POST 不起作用。如果我用 post 方法发送一些东西,变量(数组)$_POST 是空的,还有许多其他问题。现在我正在寻找不同的程序来使用。 我已经用 XAMPP 进行了测试,它工作正常。确保您的 .htaccess 中只有这两条规则,并且您的系统中没有其他 .htaccess 当我尝试到达 /clanky/nadpis_clanku .. 404 错误 我卸载了 Xampp 并安装了 Wamp。复制的文件和数据库。方法 POST 和你的 RewriteRule 也有效。也许Xampp没有正确安装..无论如何,一切都很好,感谢您的帮助和您对像我这样的新手的耐心。 :)以上是关于如何使用 .htaccess 重写 URL 而不会影响 $GET 数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 Symfony 路由从 .htaccess 重写 URL