【问题标题】:htaccess rewrite rule from subfolder1 to subfolder2 not working properly从子文件夹 1 到子文件夹 2 的 htaccess 重写规则无法正常工作
【发布时间】:2018-04-06 11:27:38
【问题描述】:

我检查了数百个与我的问题相关的主题并尝试了所有这些主题。 到目前为止,我无法得到我正在寻找的结果:

我正在尝试将子文件夹“故事”重定向到另一个“新闻”,但 index.html 和子文件夹本身除外。 整个过程保持沉默(网址仍然显示上一个子文件夹)。

ps:.htaccess 文件所在的是子目录,而不是域的根目录。

意思:

/stories/ --> /stories/
/stories/index.html --> /stories/index.html
/stories/whatever/ --> /news/whatever/ (but still showing /stories/whatever/)
/stories/whatever --> /news/whatever (but still showing /stories/whatever)

到目前为止我已经试过了:

+FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_REFERER} ^http://www.example.com [NC]
RewriteCond %{REQUEST_URI} !^/stories/index.html$
RewriteCond %{REQUEST_URI} !^/stories/$
RewriteRule ^(.*)$ /news/$1/ [P,L]

这适用于:/stories/whatever,但如果我在末尾添加 /:404 错误。 如果我在地址栏中复制 url,/stories/ 和 /stories/index.html 正在工作。但如果我点击一个链接,它会转到 /news/ 并且非静音(显示 /news/ 的网址)

我有点迷茫,尝试了很多不同的方法:

RewriteCond %{REQUEST_FILENAME} !-f

仍然无法正常工作。有什么建议吗?

提前致谢。

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite url-rewriting


    【解决方案1】:

    它会和你一起工作:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/stories/index.html$
    RewriteCond %{REQUEST_URI} !^/stories/$
    RewriteRule ^stories/(.*)$ /news/$1 [R=301,NC,L]
    

    小丑

    【讨论】:

    • 您好,感谢您的帮助。现在 /stories/ 和 /stories/index.html 正在工作。如果我将 url 粘贴到地址栏中 /stories/whatever/ 也可以,但不是通过链接。怎么会 ?规则应该以同样的方式应用吗?
    • 没看懂,举个例子让我更明白问题。
    • 我将重写规则更改为:RewriteRule ^(.*)$ /news/$1 [R=301,NC,L] 现在它可以正常工作,除非我不放 / 在网址的结尾。
    • 你可以使用这个 RewriteRule ^(.*)stories/(.*)$ /news/$2 [R=301,NC,L]
    • 您可以使用此代码添加反斜杠 RewriteRule ^(.*)stories/(.*)[^/]$ /news/$2 [R=301,NC,L]
    猜你喜欢
    • 2012-11-22
    • 1970-01-01
    • 2016-05-08
    • 2012-02-24
    • 2012-08-20
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    相关资源
    最近更新 更多