mod_rewrite 清理 URL 重写
mod_rewrite Clean URL rewriting
我正在尝试为我的网站编写干净的 url。我是这方面的新手,所以请原谅我。我的 .htaccess 文件目前看起来像这样:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)$ something.php?query=
RewriteRule ^([a-zA-Z0-9-]+)/$ something.php?query=
第一条规则似乎有效。例如 website.com/good-looking-query-string
实际上重写为 website.com/something.php?query=ugly+looking+query+string
第二条规则是我遇到问题的地方。我无法使尾部斜线起作用。例如 website.com/good-looking-query-string/
似乎拉起页面但没有应用任何 CSS 规则。我注意到所有 links 最终也附加到查询字符串中。例如 link 回到 index.php 最终像 website.com/good-looking-query-string/index.php
我需要让尾部的斜线工作。我到底做错了什么?
您可以将两行合并为一行:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)/?$ something.php?query=
在这种情况下 /
将是可选的
您的问题出在客户端,您使用的是相对路径,但您需要使用 Root-relative
路径。 URL 个:
website.com/good-looking-query-string
从根加载。 url 个:
website.com/good-looking-query-string/
从 good-looking-query-string
目录加载。
所以你应该 "href="/style.css"and the index issue should be
href="/index.php"instead of
href= 而不是 href="style.css"
"index.php"`.
如之前的评论所述,您的正则表达式可以通过在尾部斜杠上添加 ?
使其成为选项来简化。但这不是你的问题,只是简化了规则。
RewriteRule ^([a-zA-Z0-9-]+)/?$ something.php?query=
我正在尝试为我的网站编写干净的 url。我是这方面的新手,所以请原谅我。我的 .htaccess 文件目前看起来像这样:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)$ something.php?query=
RewriteRule ^([a-zA-Z0-9-]+)/$ something.php?query=
第一条规则似乎有效。例如 website.com/good-looking-query-string
实际上重写为 website.com/something.php?query=ugly+looking+query+string
第二条规则是我遇到问题的地方。我无法使尾部斜线起作用。例如 website.com/good-looking-query-string/
似乎拉起页面但没有应用任何 CSS 规则。我注意到所有 links 最终也附加到查询字符串中。例如 link 回到 index.php 最终像 website.com/good-looking-query-string/index.php
我需要让尾部的斜线工作。我到底做错了什么?
您可以将两行合并为一行:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)/?$ something.php?query=
在这种情况下 /
将是可选的
您的问题出在客户端,您使用的是相对路径,但您需要使用 Root-relative
路径。 URL 个:
website.com/good-looking-query-string
从根加载。 url 个:
website.com/good-looking-query-string/
从 good-looking-query-string
目录加载。
所以你应该 "href="/style.css"and the index issue should be
href="/index.php"instead of
href= 而不是 href="style.css"
"index.php"`.
如之前的评论所述,您的正则表达式可以通过在尾部斜杠上添加 ?
使其成为选项来简化。但这不是你的问题,只是简化了规则。
RewriteRule ^([a-zA-Z0-9-]+)/?$ something.php?query=