【问题标题】:.htaccess url rewrite not working witouth trailing slash?.htaccess url 重写在没有斜杠的情况下不起作用?
【发布时间】:2011-12-08 14:43:15
【问题描述】:

我想重写我网站中某个页面的 URL。它基本上非常简单。我的原始网址如下所示

http://www.mypage.com/website/page.php?slug=my-page

我希望它看起来像这样:http://wwww.mypage.com/website/my-page/

这行得通。如果您删除尾部斜杠,则不起作用。这是我的 htaccess:

RewriteEngine on
RewriteRule ^(.*)/$ page.php?slug=$1 [L]

好像我删除了斜杠 $_GET['slug'] 变成了只有 page.php 但带有尾部斜杠的变量说“我的页面”。

是否有可能使链接在没有斜杠和斜杠的情况下都能正常工作?

编辑: 如果我在子文件夹中有 .htaccess 和 php 文件,这有关系吗?所以我的真实网址是这样的:http://www.mypage.com/website/page.php?slug=something

我现在已经根据实际情况编辑了帖子。

【问题讨论】:

  • htaccess 文件的位置有所不同。查看 htaccess 的工作原理。

标签: php .htaccess mod-rewrite


【解决方案1】:

尝试添加这个:

RewriteRule ^website/([a-z0-9]+)/?$ website/page.php?slug=$1      [NC,L,QSA]

根据您要接受的 URL 类型,根据需要修改正则表达式。

查看 htaccess 在查询字符串等方面的工作原理:

http://httpd.apache.org/docs/1.3/howto/htaccess.html

【讨论】:

  • @jayp检查你的代码 - 你有一个左括号和一个右方括号 atm!
  • 再次尝试但没有成功,现在我得到一个 404 未找到。但是看看我原来的帖子,我已经用一些信息更新了它。您看到我不在域的根文件夹中。这有什么影响吗?
【解决方案2】:
RewriteEngine on
RewriteRule ^(.*)/?$ page.php?slug=$1 [L]

问号使斜杠成为可选的。我还建议只有一种 URL。就像没有尾随 salsh 的重定向 URL 一样。

【讨论】:

    【解决方案3】:

    我只能想到在RewriteRule ^(.*)/$ page.php?slug=$1 [L]之前使用这一行

    RewriteRule ^(.*)$ page.php?slug=$1 [L]
    

    基本上,在您的原始代码中,您声明了一个斜杠,因此它需要一个斜杠

    【讨论】:

      猜你喜欢
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      相关资源
      最近更新 更多