【问题标题】:Is Absolute Paths the only solution for htaccess URL Rewrite Issues?绝对路径是 htaccess URL 重写问题的唯一解决方案吗?
【发布时间】:2019-11-24 10:50:03
【问题描述】:

所以我尝试做一些简单的事情,只是想更改网址,例如:

website.com/user?slug=usernameexamplewebsite.com/user/usernameexample 我使用了下面的代码:

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

看起来很简单,但令我惊讶的是,这是一个小小的噩梦,因为在 URL website.com/user/usernameexample 中,所有文件(如 css/js 和其他文件)都将无法工作,因为会尝试在“用户”目录中打开而那不是全部...而且所有链接和文件都将尝试相同,例如login.php 也将尝试在不存在的“用户”文件夹中打开...

在阅读了许多 stackoverflow 答案后,最常见的答案似乎是“绝对路径”或<base href="http://www.example.com/" />...但是“基本 href”答案并不能真正正常工作,因为这会带来其他问题......所以看起来“绝对路径”是唯一可行的答案?

我想知道是否有其他解决方案...我确实尝试了一些小的 htaccess 更改,但它们对我不起作用...

【问题讨论】:

  • 您如何在 PHP 脚本以及其他 PHP 脚本中引用 CSS 和 JS 文件?
  • @Dave 类似于 href="assets/css/style.css"
  • 没有“小改动”可以解决根本问题,从客户端的角度来看,/user/ 当前路径,因此它将解决 all 与此相关的相对 URL。如果您不想指定 base 元素(个人也不是它的粉丝),那么以 / 开始所有相关引用是最常见和可行的解决方案。如果这也为您带来了“其他问题”,请解释这些问题是什么。
  • !-f/!-d 测试文件或目录是否存在于磁盘上,如果存在,则将处理以下规则。如果您的 CSS/JS 存在于磁盘上,则此规则将影响它们。 KISS - 您的正则表达式表示前导 /user/ 是可选的,这意味着它将匹配 any 请求。试试:user/(.+) user.php?slug=$1 [L,QSA]There reallyso many 重复 here on SO
  • 这能回答你的问题吗? How can I create friendly URLs with .htaccess?

标签: php .htaccess


【解决方案1】:

是的,绝对路径是唯一可行的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 2015-08-16
    相关资源
    最近更新 更多