[英]mod_rewrite Clean URL rewriting
我正在尝试为我的网站编写干净的网址。 我是这方面的菜鸟,所以请原谅我。 我的 .htaccess 文件目前看起来像这样:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)$ something.php?query=$1
RewriteRule ^([a-zA-Z0-9-]+)/$ something.php?query=$1
第一条规则似乎有效。 例如website.com/good-looking-query-string
实际上重写为website.com/something.php?query=ugly+looking+query+string
第二条规则是我遇到问题的地方。 我无法让那个斜杠起作用。 例如website.com/good-looking-query-string/
似乎拉起页面但没有应用任何 CSS 规则。 我注意到所有链接最终都附加到查询字符串中。 例如,返回 index.php 的链接最终会像website.com/good-looking-query-string/index.php
我需要让那个斜杠起作用。 我到底做错了什么?
您可以将两行合并为一行:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)/?$ something.php?query=$1
在这种情况下/
将是可选的
您的问题是客户端,您使用的是相对路径,但您需要使用Root-relative
路径。 一个URL:
website.com/good-looking-query-string
从根加载。 一个 url 的:
website.com/good-looking-query-string/
从good-looking-query-string
目录加载。
因此,您应该使用“href="/style.css" 而不是href="style.css"
style.css" and the index issue should be
href="/index.php" instead of
href="index.php"`。
如前面的评论所述,您的正则表达式可以通过添加?
在尾部斜杠上使其成为选项。 不过,这不是您的问题,只是简化了规则。
RewriteRule ^([a-zA-Z0-9-]+)/?$ something.php?query=$1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.