2013-02-10 369 views
0

我試圖重寫一些參數,以美麗的鏈接,但一個子域/一個文件夾只有。不幸的是我無法得到它的工作,也許還因爲有前行一些其他的重寫......htaccess只爲子域重寫

繼承人我的代碼:

<IfModule mod_rewrite.c> 
# NON-WWW TO WWW 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example.com 
RewriteRule (.*) http://www.example.com/$1 [R=301,L] 

# WORDPRESS-BLOG 
Options +FollowSymlinks 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

# REDIRECT FOR SUBDOMAIN 
RewriteCond %{HTTP_HOST} ^subdomain.example.com 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/.]+)(?:/)?$ index.php?cshort=$1 [L] 
RewriteRule ^([^/.]+)/([^/.]+)(?:/)?$ /index.php?cshort=$1&cid=$2 [L] 
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)(?:/.*)?$ /index.php?cshort=$1&cid=$2&step=$3 [L] 
</IfModule> 

基本上只有最後一個部分是一個我想重寫從類似

http://subdomain.example.com/index.php?cshort=abc&cid=123&step=1更改URL來http://subdomain.example.com/abc/123/1

www.example.com的其他重寫規則不應該受到影響。不幸的是,我現在的代碼只能完成博客和www的前兩條規則,但在子域上沒有任何反應。我的代碼有什麼問題?

回答

1

當你說你想從http://subdomain.example.com/index.php?cshort=abc&cid=123&step=1改寫爲http://subdomain.example.com/abc/123/1你的意思是你希望用戶輸入漂亮的URL並讓它在後臺提供完整的URL,而不是你想從醜陋重定向到漂亮的網址,對吧?

在你的RewriteRules中,你想用「(?:/)?」完成什麼?正如所寫,這對我沒有任何意義。如果你只是想匹配的目錄路徑是否與斜線結尾,你可以做如下:

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

編輯:補充建議:

  1. 移動「的重定向子網域「部分上方的」子網域「部分。由於Wordpress規則適用於「所有不是真正的文件或目錄,不管域名」應該最後。

  2. RewriteConds僅適用於跟在它們後面的單個RewriteRule。對於您在「子域重定向」下列出的三個規則中的每一個,在根據上述建議更新它們之後,您需要重複RewriteRule前面的兩條RewriteCond行。

+0

是啊,我當然希望他們的用戶輸入URL漂亮......對於任何建議,因爲即使你改正它沒有做任何事情:( – Anonymous 2013-02-11 16:55:48

+0

增加了幾個有關規則順序和使用更多的建議RewriteConds。 – 2013-02-11 18:19:08