2012-07-13 70 views
0

我有這個.htaccess文件:mod_rewrite的重定向問題

Options +FollowSymlinks 
RewriteEngine On 

RewriteRule ^([a-zA-Z0-9_-]+)$ profil.php?user=$1 [NC] 
RewriteRule ^([a-zA-Z0-9_-]+)/$ profil.php?user=$1 [NC] 
RewriteRule ^([a-zA-Z0-9_-]+)/galerie$ galerie.php?user=$1 [NC] 
RewriteRule ^([a-zA-Z0-9_-]+)/galerie/$ galerie.php?user=$1 [NC] 
RewriteRule ^(.*)/galerie-(.*)_(.*)$ galerie_poze.php?user=$1&album=$2&page=$3 [NC] 
RewriteRule ^(.*)/galerie-(.*)_(.*)/$ galerie_poze.php?user=$1&album=$2&page=$3 [NC] 
RewriteRule ^(.*).php?$ index.php?request=$1 [QSA,L] 

,它似乎沒有工作。

這是我的問題:當我想訪問我的網站上的一個頁面,例如site.com/test.php, 它重定向到index.php?request=test。問題是我也有「profil.php」和「galerie.php」,我不想通過index.php。相反,當我這樣做:site.com/username/profil,我希望它指向profil.php?user=username,但它不工作。

有什麼建議嗎?

回答

0

你想你的兩個第一規則之一,用來匹配[username]/profil(它現在匹配[username][username]/

嘗試

RewriteRule ^([a-zA-Z0-9_-]+)/profil$ profil.php?user=$1 [NC, L] 
+0

的事情是它沒有工作...它重定向到index.php?請求=用戶/ profil – 2012-07-13 20:52:36

0

使用條件。

確保文件或目錄不存在:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

您還可以通過使用類似限制重定向:

RewriteCond %{REQUEST_URI} !^/profil\.php$ [NC] 

確保正確逃生。 這需要進行轉義:

RewriteRule ^(.*).php?$ index.php?request=$1 [QSA,L] 

像:

RewriteRule ^(.*)\.php?$ index.php?request=$1 [QSA,L] 

此外,

RewriteRule ^([a-zA-Z0-9_-]+)$ profil.php?user=$1 [NC] 
RewriteRule ^([a-zA-Z0-9_-]+)/$ profil.php?user=$1 [NC] 

可以簡化爲:

RewriteRule ^([a-zA-Z0-9_-]+)/?$ profil.php?user=$1 [NC] 
1

我已經把類似的東西這個:

RewriteCond %{REQUEST_URI} !^(.*)\.php?$ 
RewriteRule ^(.*)\.php?$ index.php?request=$1 [QSA,L] 


RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9_-]+)$ profil.php?user=$1 [NC] 
RewriteRule ^([a-zA-Z0-9_-]+)/$ profil.php?user=$1 [NC] 
RewriteRule ^([a-zA-Z0-9_-]+)/personal$ personal.php?user=$1 [NC] 
RewriteRule ^([a-zA-Z0-9_-]+)/personal/$ personal.php?user=$1 [NC] 
RewriteRule ^([a-zA-Z0-9_-]+)/galerie$ galerie.php?user=$1 [NC] 
RewriteRule ^([a-zA-Z0-9_-]+)/galerie/$ galerie.php?user=$1 [NC] 
RewriteRule ^(.*)/galerie-(.*)_(.*)$ galerie_poze.php?user=$1&album=$2&page=$3 [NC] 
RewriteRule ^(.*)/galerie-(.*)_(.*)/$ galerie_poze.php?user=$1&album=$2&page=$3 [NC] 

,當我做/或用戶名/用戶名/ PROFIL它的工作原理,但它不再與第一條規則ID我做的sitename.tld/test.php的它不工作工程....

+0

我忘了提及,該網站有2 profil.php(第一個顯示配置文件的客人,第二個顯示記錄在用戶他們的配置文件)所有的網站功能谷歌index.php,我們顯示給客人在這3個文件(personal.php,profil.php和galerie.php/galerie_poze.php) – 2012-07-15 08:56:05