【问题标题】:mod_rewrite - writing regular expression for clean url and unclean urlmod_rewrite - 为干净的 url 和不干净的 url 编写正则表达式
【发布时间】:2012-12-24 05:45:48
【问题描述】:

如果我有一个 mod 重写代码如下:

RewriteRule ^/(\w+)/?$ index.php?id=$1  

我是 mod-rewrites 的新手,我想知道用户是否输入了干净的 url 而不是不干净的,例如

http://example.com/1000/

进入浏览器而不是

http://example.com/index.php?id=1000

我仍然可以请求 1000 的 $_GET[] 变量吗?

谢谢大家。

【问题讨论】:

  • 应该可以。你试过了吗?

标签: php apache mod-rewrite


【解决方案1】:

试试这个:

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

【讨论】:

  • @Aiden 您应该测试所有答案以确定它们是否有效。您的规则不起作用,因为它在正则表达式中有一个前导 /,因此条件永远不会匹配。另一方面,这样做的方法就是在这个答案中,以防止循环并定义一个 RewriteBase。 ¿ 这个答案会发生什么,它对你有用还是你只是一见钟情?
  • 嘿 Felipe,我刚刚重新安装了 xampp 并更改了 apache 配置,您的代码运行良好,非常感谢您
【解决方案2】:

我像你一样使用RewriteRule ^/(\w+)/?$ index.php?id=$1...而且我向你保证它有效..你启用了 Mod Rewrites 吗?

$ sudo a2enmod rewrite
$ sudo service apache2 restart

【讨论】:

  • 我已经检查了 apache 处理程序,它说它的 mod_rewrite 但是当我尝试它时没有任何效果,我还将 AllowOverride None 更改为 All 并重新启动了 apache 几次,也许我在安装时遇到了问题本地主机?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2010-12-06
  • 1970-01-01
  • 2016-04-24
相关资源
最近更新 更多