【问题标题】:Link not opening properly after hiding file extension using htaccess使用 htaccess 隐藏文件扩展名后链接无法正常打开
【发布时间】:2015-06-15 10:13:23
【问题描述】:

我已使用 ht-access 隐藏 .php 文件扩展名。在.htaccess 文件中,我的代码是:

# Apache Rewrite Rules
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

# Add trailing slash to url
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
RewriteRule ^(.*)$ $1/ [R=301,L]

# Remove .php-extension from url
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)/$ $1.php 

# End of Apache Rewrite Rules
</IfModule>

它很好地隐藏了.php 文件扩展名。 但问题是href 属性内的链接无法正常打开。

我有两个文件:

public_html/afiliate/product_details.php

public_html/afiliate/afiliate_login.php

product_details.php里面我已经给了afiliate_login.php这样的链接

<a href="afiliate_login.php" target="_blank">Log in</a>

点击登录我应该去一个类似的页面

example.com/afiliate/afiliate_login/

但它需要我去

example.com/afiliate/product_details/afiliate_login/

因此出现 404 错误

再次注意,如果我手动输入此 URL

example.com/afiliate/afiliate_login/

没关系,按预期进入页面。

现在我怎样才能使链接正常工作?

【问题讨论】:

    标签: javascript php apache .htaccess


    【解决方案1】:

    这段代码之后:

    RewriteRule ^([^\.]+)/$ $1.php 
    

    下面的代码

    RewriteRule afiliate_login$   afiliate_login.php [L]
    

    基本上意味着任何来到afiliate_login的请求都会显示来自afiliate_login.php的数据

    您遇到了这个问题,因为在您的锚标记中您使用的是相对 url。由于您的网址看起来像这样没有文件扩展名,example.com/afiliate/afiliate_login/affiliate_login/ 也将被视为一个目录,并且 html 认为锚标记在 affiliate_login/ 但实际上它不存在在那里所以你得到 404 错误。

    【讨论】:

    • 检查文件afiliate_login.php 是否确实存在以及它的存储路径是什么,我可以看到您正在为该文件使用.php 扩展名。 afiliate_login.php 实际存放的路径是什么。
    【解决方案2】:

    以前浏览器将product_details.php 视为一个文件。但现在它是一个文件夹,因为它的 product_details/

    这里可用的一个选项是像这样更新链接

    <a href="../afiliate_login.php" target="_blank">Log in</a>
    

    但它总是像下面的链接一样建议

    <a href="/afiliate_login" target="_blank">Log in</a>
    

    【讨论】:

    • 它可以工作,但是当 .php 被隐藏时,图像和 .js 文件没有加载
    • 可能是图片和js文件中加了斜线。
    猜你喜欢
    • 2014-03-29
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 2013-02-03
    • 2017-01-29
    • 2012-07-04
    • 1970-01-01
    • 2017-09-24
    相关资源
    最近更新 更多