单击 index.php 时,RewriteRule 不起作用。以下是我的代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^home$ /index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^bagsgentssel/([0-9]+)$ /bagsgentssel.php?h=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /leather-product.php?n=$1 [QSA,L]
当 index.php 第一次加载时,它完美地完成。
但是当我点击其他链接时,例如:链接1:leather-product.php:点击此链接时,url 更改为“localhost / leather-product / 12”和链接2:bagsfentssel.php:如果我点击此链接,url 更改为“localhost / bagsgentssel / 45”
点击以上链接后,如果我点击公司徽标(基本上是指向 index.php 的链接),则 url 会更改为“localhost/leather-product/index.php”。
<a href="index.php" class="navbar-brand" style="border:0px solid red;">
<img src="/images/logo.jpg" class="img-responsive" alt="xyz co">
</a>
类似地,如果我单击 Link2 url,则更改为“localhost/leather-product/index.php”
为什么会发生这种情况。我知道代码中一定有问题。但是在哪里呢?请帮忙?
答案1
<a href="index.php" class="navbar-brand" style="border:0px solid red;">
这里的问题似乎是你链接到一个相对的HTML 中的URL(index.php
)。例如,如果浏览器当前正在查看 URL,/leather-product/12
则客户端相对的诸如 的 URLindex.php
自然会相对于 解析/leather-product/12
并变为/leather-product/index.php
。这一切都发生在客户端 HTML 中 - 在浏览器中。
相反,您需要使 URL 相对于根目录(斜杠前缀),即。/index.php
(或者简单地/
- 假设您的DirectoryIndex
设置正确。)
另请参阅网站管理员堆栈上的相关问题:
但是当我单击其他链接时,例如:Link1:leather-product.php:单击此链接后,url 更改为“localhost / leather-product / 12”
在旁边:需要澄清的是,链接本身不应包含leather-product.php
,URL 也不应该“改变”为/leather-product/12
- 正如您暗示的那样。您应该看到的唯一可见链接/URL 是/leather-product/12
。leather-product.php
应该完全隐藏在客户端中。(?)