单击 index.php 时 RewriteRule 不起作用

单击 index.php 时 RewriteRule 不起作用

单击 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:如果我点击此链接,u​​rl 更改为“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/12leather-product.php应该完全隐藏在客户端中。(?)

相关内容