2013-03-18 57 views
2

我很少涉足服務器端的設置。這是我正在嘗試在我的.htaccess文件中執行的操作。 http://domain.com/variable應改寫爲http://domain.com/home.php?aid=variableapache中的多個RewriteBase

要做到這一點,我有:

<Directory /var/www/domain.com/www> 
Options -Indexes +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^([0-9a-zA-Z]*)$ /index.php?aid=$1 [L] 
</Directory> 

我希望現在能夠做到這一點還有: http://domain.com/webinar/variable應該改寫爲http://domain.com/webinar.php?aid=variable

我需要第二重寫基於相同的規則還是另一個規則?

回答

3

只是一個新的RewriteRule。新的RewriteBase指令會過度,因爲您仍然需要編寫另一個RewriteRule。

<Directory /var/www/domain.com/www> 
Options -Indexes +FollowSymLinks 
RewriteEngine On 
RewriteBase/

# Stop execution if request is for an existing file or directory 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule . - [L] 

# Rewrite webinar/variable to webinar.php?aid=variable 
RewriteRule ^webinar/([0-9a-zA-Z]*)$ webinar.php?aid=$1 [L] 

# Rewrite variable to index.php?aid=variable 
RewriteRule ^([0-9a-zA-Z]*)$ index.php?aid=$1 [L] 
</Directory> 
+0

嗨Kjetilh,謝謝你的回覆!我加了'RewriteRule。 - [L]',我添加了RewriteRule^webinar /([0-9a-zA-Z] *)$ /webinar.php?aid=$1 [L]',像索引重寫那樣。當我去http://domain.com/webinar/variable時,它給了我一個Not Found - 在這臺服務器上沒有找到請求的URL/webinar /變量。我不必重新啓動Apache或我有什麼? – tomjung 2013-03-19 16:41:27

+0

@tomjung由於您似乎在服務器配置中添加了與.htaccess文件相反的這些規則,因此我認爲您必須重新啓動Apache – kjetilh 2013-03-19 17:37:24

+0

謝謝!我在虛擬主機上設置了一些其他的東西。我重新啓動,它的工作! – tomjung 2013-03-19 21:31:26