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