【问题标题】:Issues Removing index.php from Mediawiki URL从 Mediawiki URL 中删除 index.php 的问题
【发布时间】:2015-06-02 13:06:43
【问题描述】:

我有一个使用虚拟主机设置为子域根目录的 php 网站 (laravel)。所以http://subdomain.website.com 会去 laravel 网站。我希望能够访问http://subdomain.website.com/wiki,它将直接指向 mediawiki 安装。为此,需要在虚拟主机中设置一个别名。

<VirtualHost *:80>
    DocumentRoot "/var/www/laravel/public"
    ServerName sub.domain.com
    Alias /wiki "/var/www/mediawiki" 
    Alias /w "/var/www/mediawiki" 
   <Directory "/var/www/laravel/public"> 
        AllowOverride All
        Options +FollowSymLinks
        RewriteEngine On
    </Directory>
</VirtualHost>

这正是我希望它工作的方式,但是有一个问题。我想从 url 中删除 index.php。这样“/wiki/index.php/Main_Page”就变成了“/wiki/Main_Page”。

我尝试使用在其他指南中找到的http://shorturls.redwerks.org/,但它不适用于我。生成的任何代码都会产生 wiki/wiki/Main_page ,甚至在该页面引发错误。

在此服务器上找不到请求的 URL /wiki/wiki/Main_Page。

我尝试过使用大量不同的 url 组合,但无法使其正常工作。由于这个网站是一个子域,我无法使用 wiki.domain.com。该 wiki 必须是子域的一部分。有人知道我需要做什么才能完成这项工作吗?

我需要的最终结果是让这个 URL 将我带到主页

http://sub.domain.com/wiki/Main_Page

【问题讨论】:

标签: php apache .htaccess mediawiki


【解决方案1】:

您需要启用 mod_rewrite,然后您可以使用这样的规则来删除 index.php。您可以在 Wiki 文件夹中的 .htaccess 中使用它。

RewriteEngine On
RewriteBase /wiki
#redirect index.php to non index.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\ /(.*)index\.php
RewriteRule ^ %1? [R=301,L]
#internally rewrite request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

更新:通常这应该适用于典型的 CMS,但由于使用了 wikiw 文件夹,mediawiki 本身具有独特性。

http://www.mediawiki.org/wiki/Manual%3aShort_URL/Apache

根据所选的 mediawiki 结构,需要这样的规则

RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]

【讨论】:

  • 这种工作。它把我带到了一个 wiki 页面,但看起来有某种循环。网址是这样的.....wiki/Wiki/wiki/Wiki/wiki/Wiki/wiki/Wiki/wiki/Wiki/wiki/Wiki/wiki/Wiki/Main_Page
  • 您一定遗漏了一些信息,因为那里也有 wiki 文件夹?在您的问题中准确发布 .htaccess 文件中的内容。
  • 除了上面发布的内容外,我一无所有。不过,Mediawiki 不是标准网站。如果我将 htaccess 设为空白并访问 /wiki,它将重定向到 /wiki/index.php?/Main_Page。因此,虽然重写可能是正确的,但 wiki 中的代码不正确,我不确定缺少什么才能使其正常工作。
  • 您的 .htaccess 文件在哪里?
  • "/var/www/mediawiki/.htaccess"。我有一个 apache 别名设置,可以将“/wiki”的请求定向到该目录。我尝试完全删除 htaccess 并编辑别名以使 .index.php 结束。这是有效的,但没有显示 css 或图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
相关资源
最近更新 更多