【问题标题】:How can i make htaccess rewrite not to affect other url links on my page如何使 htaccess 重写不影响我页面上的其他 url 链接
【发布时间】:2018-10-28 10:56:28
【问题描述】:

使用.htaccess 重写我的网址后,我现在面临着不同的挑战。 我的detail.php 页面上的所有其他链接都不再正确。

例子:

这应该是正常的 URL:

http://localhost/FashionSite/about-us.php

但它现在显示的是:

http://localhost/FashionSite/product/Coporate/polo-and-trouser/about-us.php

detail.php 页面上的所有 URL 链接都会发生这种情况。

以下是我的 .htaccess 代码,它运行良好,但在 detail 页面上,其他所有 URL 都会更改:

<IfModule mod_rewrite.c> 
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(admin|user)($|/) - [L]
RewriteRule ^(slide|user)($|/) - [L]
RewriteCond %{REQUEST_URI} !\.(?:css|js|jpe?g|gif|png)$ [NC]
RewriteRule ^product/(.*)/(.*)/ detail.php?ID=$1&url=$2 [L]
RewriteRule ^product/[^/]+/[^/]+(/.+)$ http://localhost/FashionSite/$1  [L]
</IfModule>

请问我应该怎么做或添加到代码中以使这些链接正常。

【问题讨论】:

    标签: php redirect .htaccess


    【解决方案1】:

    您似乎正在使用 相对 URL 链接到您的网页。 HTML 中的任何相对链接都相对于客户端 URL。如果您正在重写 URL,那么您的链接现在将与重写的 URL 相关。

    例如,如果浏览器当前显示 URL http://localhost/FashionSite/product/Coporate/polo-and-trouser/detail.php,那么 &lt;a href="about-us.php"&gt; 形式的锚点自然会与此 URL 相关,浏览器会将其解析为 http://localhost/FashionSite/product/Coporate/polo-and-trouser/about-us.php

    您需要将内部链接更改为使用相对根目录(以斜杠开头)或绝对 URL(带有方案 + 主机名)。例如:&lt;a href="about-us.php"&gt; 应更改为 &lt;a href="/FashionSite/about-us.php"&gt;(如果所有内容都在 /FashionSite 子目录中。

    或者,在您的页面的head 中设置base 标记,向浏览器指示所有相对链接应该相对 到的URL。例如:

    <base href="http://localhost/FashionSite/index.php">
    

    但是,base 标签并非没有注意事项。例如&lt;a href="#top" 形式的页内锚点现在也与此基本 URL 相关。最好将所有链接更改为根相关(或绝对)。

    查看我在 Pro Webmasters stack 上讨论类似问题的答案:

    【讨论】:

    • 谢谢,但我已经尝试了一切,但仍然无法正常工作。我还将此 localhost/index.php"> 添加到我的 html 的头部,但它仍然没有工作。是否有任何我应该添加到 htaccess 代码中以使其工作的代码?
    • 啊,如果您的.htaccess 文件(和所有内容)在/FashionSite 子目录中,那么您的链接显然需要采用/FashionSite/about-us.php 的形式(而不是我最初的/about-us.php在我的回答中说明)。因此,如果您使用了base 标记并链接到about-us.php,那么这也应该引用/FashionSite 子目录。我会更新我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2016-06-03
    相关资源
    最近更新 更多