我想要的是这个链接
gallery/1
前往
gallery.php?id=1
我在.htaccess
文件中为此写的是
RewriteRule ^gallery/(.*)? gallery.php?id=$1
允许我按照我的意愿获取该ID,但页面上没有任何内容显示,因为它假设现在所有文件路径都以gallery
开头。就像图片的路径应该是img/icon.png
时一样,它现在是gallery/img/icon.png
,因此它不会显示出来。如何解决这个问题?我想我对网址重写有些误解。
答案 0 :(得分:2)
我认为问题是你的图像来源而不是你的.httaccess。如果您的图片使用
src="img/icon.png"
并且您在yourwebsite.com/gallery中,那么您的图片将变为yourwebsite.com/gallery/img/icon.png
。
尝试更改来源,以包含完整网址(yourwebsite.com/img/icon.png)
或来自根(/img/icon.png)
的路径。
答案 1 :(得分:2)
在mod_rewrite
中,如果符合一个或多个条件,您可以指出某些重写规则仅适用于 。
在这种情况下,如果URI以gallery
开头:
RewriteCond %{REQUEST_URI} ^gallery
RewriteRule ^gallery/(.+) gallery.php?id=$1
答案 2 :(得分:2)
您在RewriteCond
之前错过了RewriteRule
。试试这个:
RewriteCond "%{REQUEST_URI}" ^gallery
RewriteRule ^gallery/([0-9]+) /gallery.php?id=$1
您的(.*)?
表达式不正确,因为*
将匹配零个或多个字符(您需要一个或多个数字,来自您的示例),而?
与{{1}一起使用是多余的}}
答案 3 :(得分:1)
URL中的额外斜杠会更改相对URL基数。您内容中相对网址的所有链接现在都将使用不正确的基础。您可以使用绝对网址(以/
开头)或在网页标题中添加基数来解决此问题:
<base href="/" />