我有一个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>
这正是我希望它工作的方式,但是有一个问题。我想从网址中删除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需要成为子域的一部分。任何人都知道我需要做些什么来使这项工作?
我需要的最终结果是将此网址带到主页
答案 0 :(得分:2)
您需要启用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'但是,由于使用wiki
和w
文件夹,mediawiki本身具有独特性。
http://www.mediawiki.org/wiki/Manual%3aShort_URL/Apache
根据所选的mediawiki结构,它需要一个像
这样的规则RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]