首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用htaccess隐藏文件扩展名后未正确打开的链接

使用htaccess隐藏文件扩展名后未正确打开的链接
EN

Stack Overflow用户
提问于 2015-06-15 10:13:23
回答 1查看 119关注 0票数 0

我已经使用ht访问隐藏.php文件扩展名.在.htaccess文件中,我的代码是:

代码语言:javascript
复制
# 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链接

代码语言:javascript
复制
<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/

没关系,它会像预期的那样转到页面。

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

EN

回答 1

Stack Overflow用户

发布于 2015-06-15 10:34:20

在此代码之后:

代码语言:javascript
复制
RewriteRule ^([^\.]+)/$ $1.php 

把下面的代码

代码语言:javascript
复制
RewriteRule afiliate_login$   afiliate_login.php [L]

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30842577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档