2015-05-24 40 views
0

我的.htaccess文件有問題。 我最近搬到那是在一個子目錄中的根路徑論壇(IPB),所以我寫了這個.htaccess文件.htaccess移動論壇和SEO網址

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase/

RewriteRule ^view/([0-9]+)/?$ index.php?view=$1 [NC,L] 

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$ 
RewriteCond %{REQUEST_URI} !^/forum/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /forum/$1 

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$ 
RewriteRule ^(/)?$ forum/index.php 

而這個工作非常出色。 基本上,我想要指向論壇的舊網址,被重定向到論壇子目錄。

但這是問題所在。 在根路徑現在,有一個index.php文件,這將是新的網站,我想搜索引擎友好的URL,所以我寫了這條線

RewriteRule ^view/([0-9]+)/?$ index.php?view=$1 [NC,L] 

但這種規則不起作用。 像

www.domain.com/view/welcome/ 

每個請求重定向到一個404頁的IPB論壇。

我也試過放一些RewriteCond,但結果是一樣的, 每個涉及根路徑中新index.php的url都會變成一個404頁面。

編輯: 在/論壇/ 有此.htaccess

ErrorDocument 401 /401.shtml 
<IfModule mod_rewrite.c> 
Options -MultiViews 
RewriteEngine On 
RewriteBase /forum 

RewriteCond %{REQUEST_FILENAME} .*\.(jpeg|jpg|gif|png)$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . /public/404.php [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L,QSA] 

</IfModule> 

回答

0

在規則之下,你只匹配視圖後數字,但希望welcome

RewriteRule ^view/([0-9]+)/?$ index.php?view=$1 [NC,L] 

變化

RewriteRule ^view/(.+)/?$ index.php?view=$1 [NC,L] 

並添加一些行可以消除不必要的重定向

RewriteRule ^view/(.+)/?$ index.php?view=$1 [NC,L] 

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC] 
RewriteCond %{REQUEST_URI} !^/forum/ 
RewriteCond %{REQUEST_URI} !^/index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /forum/$1 

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC] 
RewriteCond %{REQUEST_URI} !^/index.php 
RewriteRule ^(/)?$ forum/index.php 
+0

還沒幹活G。我相信問題是我用來將請求重定向到/ forum /的規則,但我現在不能找到解決方案 – divby0

+0

。我已經擴展了答案 – splash58

+0

不,這不起作用。 – divby0

0

我發現問題了! 我用的是這樣的:

/* Configuration: Path to IP.Board */ 
define('IPB_LOC', 'forum/'); 
define('IPS_ENFORCE_ACCESS', TRUE);//DAMN COSTANT 

/* Load IP.Board files */ 
require_once(IPB_LOC . 'conf_global.php'); 
require_once(IPB_LOC . 'initdata.php'); 
require_once(IPB_LOC . CP_DIRECTORY. '/sources/base/ipsRegistry.php'); 

/* Init Registry */ 
ipsRegistry::init(); 

/* Fetch Member */ 
$member = ipsRegistry::member()->fetchMemberData(); 
$loggedIn = (bool) $member['member_id']; 

要檢查如果用戶在論壇記錄,但我還沒有寫這行

define('IPS_ENFORCE_ACCESS', TRUE);//DAMN COSTANT 

這告訴給IPB並非由自身的URL處理你將映射(我認爲這允許外部訪問)

所以我結束了與.htaccess從@ splash58(謝謝!)