从 Mediawiki URL 中删除 index.php 的问题
Issues Removing index.php from Mediawiki URL
我有一个 php 网站 (laravel),它使用虚拟主机设置为子域的根目录。所以 http://subdomain.website.com will go to the laravel website. I want to be able to go to 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,甚至页面会抛出错误。
The requested URL /wiki/wiki/Main_Page was not found on this server.
我曾尝试使用 url 进行大量不同的组合,但无法正常工作。由于该网站是一个子域,我无法使用 wiki.domain.com。此 wiki 需要成为子域的一部分。有人知道我需要做什么才能完成这项工作吗?
我需要的最终结果是 URL 将我带到主页
您需要启用 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?/ [L]
更新:通常这应该适用于典型的 CMS' 但是 mediawiki 本身有一个独特之处,因为使用 wiki
和 w
文件夹。
http://www.mediawiki.org/wiki/Manual%3aShort_URL/Apache
根据所选的 mediawiki 结构,需要这样的规则
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]
我有一个 php 网站 (laravel),它使用虚拟主机设置为子域的根目录。所以 http://subdomain.website.com will go to the laravel website. I want to be able to go to 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,甚至页面会抛出错误。
The requested URL /wiki/wiki/Main_Page was not found on this server.
我曾尝试使用 url 进行大量不同的组合,但无法正常工作。由于该网站是一个子域,我无法使用 wiki.domain.com。此 wiki 需要成为子域的一部分。有人知道我需要做什么才能完成这项工作吗?
我需要的最终结果是 URL 将我带到主页
您需要启用 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?/ [L]
更新:通常这应该适用于典型的 CMS' 但是 mediawiki 本身有一个独特之处,因为使用 wiki
和 w
文件夹。
http://www.mediawiki.org/wiki/Manual%3aShort_URL/Apache
根据所选的 mediawiki 结构,需要这样的规则
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]