【问题标题】:htaccess to manually redirect to renamed "Main Page"htaccess 手动重定向到重命名的“主页”
【发布时间】:2026-02-11 03:00:01
【问题描述】:

我们的网站有这样的.htaccess

RewriteEngine On
RewriteRule ^/wiki/Main_Page$ /wiki/Welcome_to_Our_Site [R]
RewriteRule ^/?wiki/?$ / [R]

RewriteRule ^/?$ %{DOCUMENT_ROOT}/index.php?title=Welcome_to_Our_Site [L,QSA]
RewriteRule ^/?wiki(/.+)$ %{DOCUMENT_ROOT}/index.php [L]
RewriteRule ^/?w(/.*)?$ %{DOCUMENT_ROOT}/index.php [L]

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^/?images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ %{DOCUMENT_ROOT}/thumb.php?f=$1&width=$2 [L,QSA,B]

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^/?images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ %{DOCUMENT_ROOT}/thumb.php?f=$1&width=$2&archived=1 [L,QSA,B]

我也用MediaWiki:Mainpage 指向Welcome_to_Our_Site

为了可能已经为旧页面添加书签的用户,我还希望 Main_Page 手动重定向到 Welcome_to_Our_Site--没有重定向通知--但这没有发生.

我最初将 Main Page 移动到 Welcome_to_Our_Site,在 Mediawiki 软件中创建重定向,但即使我删除 Main Page 或在其中添加文本而不进行重定向,我的 htaccess 规则也不会覆盖 Mediawiki 的我认为应该自己重定向并将Main Page重定向到Welcome_to_Our_Site,更改URL,但没有显示Mediawiki“(从主页重定向)”重定向文本。我期望的行有什么问题 RewriteRule ^/wiki/Main_Page$ /wiki/Welcome_to_Our_Site [R] 或之后的级联?

【问题讨论】:

    标签: .htaccess redirect mod-rewrite mediawiki


    【解决方案1】:

    保持前 2 条规则如下:

    RewriteRule ^/?wiki/Main_Page/?$ /wiki/Welcome_to_Our_Site [NC,L,R=302]
    
    RewriteRule ^/?wiki/?$ / [R=302,L,NC]
    

    假设这个 htaccess 被放置在站点根目录中,并且/wiki/ 目录中没有 .htaccess(如果它是一个目录的话)。

    【讨论】:

    • +1 提示我一开始就需要/?。但是,我似乎确实需要我以前使用的 [R],因为 [NC,L] 没有成功。
    • 是的,您可以添加R,但浏览器中的网址也会更改为/wiki/Welcome_to_Our_Site
    • 我已更新 OP 以澄清我希望它更改 URL。如果你想编辑你的答案,我会把你的作为答案。
    • @BrettZamir:你可能应该在你的 .htaccess 文件中添加一个RewriteBase 指令,并摆脱所有%{DOCUMENT_ROOT} hacks。 (也就是说,你的整个设置看起来有点滑稽,尤其是 /w/ 重定向。如果我有时间,我可能会在稍后写一个更长的答案。)
    • 是的,即使没有任何RewriteBase%{DOCUMENT_ROOT}/ 也可以从目标 URI 中删除,因为它们仅用于内部重写。