繁体   English   中英

mod_rewrite 清洁 URL 重写

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM