2009-07-24 43 views
0

我現在的.htaccess文件改寫簡單的URI與的.htaccess

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} . 
RewriteCond %{HTTP_HOST} !^falsebase\.net 
RewriteRule (.*) http://falsebase.net/$1 [R=301,L] 

我想添加到這個讓我當用戶輸入「http://u.falsebase.net/USERNAME」到他們的地址欄中,他們得到指向「http://falsebase.net/profile.php?name=USERNAME」。

我想這很簡單,我只是沒有使用.htaccess的經驗,並且在掃描了大約12個與此類似的線程後,我沒有從任何一個線索得到一致的答案。

回答

0

您需要使用內部重寫規則,而不是外部重定向。您不希望用戶看到像/profile.php?name=USERNAME這樣的醜陋網址。

所以儘量使用像

RewriteEngine On 
RewriteRule ^/(.+)$ /profile.php?name=$1 

哪裏。+是用戶名相匹配的模式。

如果你知道你的用戶名都是AZ或az字符,例如,可以以上通過考慮使用

RewriteEngine On 
RewriteRule ^/(a-zA-Z)$ /profile.php?name=$1 

熊是有你的URL的用戶名部分爲/用戶名將會趕上收緊這件事全部可能的網址。你可能希望把這些成一個特定的命名空間,就像

http://www.example.com/user/<username> 

其中輸入的用戶名,在這種情況下,你可以使用

RewriteEngine On 
RewriteRule ^/user/(.+)$ /profile.php?name=$1 

+0

我想,這一點,但它不似乎沒有用。我試圖添加一些東西到我當前的htaccess文件(如上所示),而不是用某些東西替換它。我想htaccess都重定向所有www.mydomain.net - > mydomain.net(它已經這樣做並且工作正常)並添加內部重寫,所以mydomain.net/u/USERNAME總是加載頁面mydomain.net/profile。 php?name = USERNAME,同時仍有mydomain.net/u/USERNAME顯示爲URL。 – RyanMcG 2009-09-29 17:22:29

0

嘗試下列規則:

RewriteCond %{HTTP_HOST} . 
RewriteCond %{HTTP_HOST} !^(u\.)?falsebase\.net 
RewriteRule (.*) http://falsebase.net/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} !^(u\.)?falsebase\.net 
RewriteRule ^[^/]+$ http://falsebase.net/profile.php?name=$0 

或者,如果內部重定向是可能的:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} !^(u\.)?falsebase\.net 
RewriteRule ^[^/]+$ profile.php?name=$0