2017-02-28 41 views
0

我試圖在.htaccess中用多個條件創建規則而不成功。設置一個帶有多個URL條件的htaccess

我需要一個像所有的請求: http://www.domain.com/portfolio-view/my-project-name/

重定向到: http://www.domain.com/#cbp=http://www.domain.com/portfolio-view/my-project-name/

只有包含 「組合視圖」,而不是 「#CBP =」 URL。

我試圖做到這一點,但它會造成無限循環。

而且,我想這一點,但它不工作:

RewriteEngine On 
RewriteBase 
RewriteCond %{REQUEST_URI} ^/portfolio-view/.* 
RewriteRule ^(.*)$ http://www.domain.com/#cbp=%{REQUEST_URI} [R=301,L] 

回答

0

實際上,你只需要檢查是否請求以字符串/portfolio-view/開始。

這應該給予正確的結果:

RewriteCond %{REQUEST_URI} ^/portfolio-view/.* 
RewriteRule ^(.*)$ http://%{SERVER_NAME}/#cbp=http:\/\/%{SERVER_NAME}%{REQUEST_‌​URI} [R=303,L,NE] 

這一個條件是true如果URI開始(^)使用該文本/portfolio-view/
.*表示條件不應該關心接下來的內容。

如果規則匹配,則不必檢查其他條件,因爲如果它已經以/portfolio-view開頭,則無法以/#cbp=開頭。

我在一臺測試機器上測試過,工作得很好,但是我在我的網絡服務器配置文件(在站點啓用目錄下,我會推薦)做到了。

我在htaccess文件中試過了,上面的例子工作原理是一樣的。

看起來你可以簡單地省略RewriteBase指令如果.htaccess文件位於網站的基本目錄中。我想我的測試服務器上的例子,這是我現在.htacces的樣子:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/portfolio-view/.* 
RewriteRule ^(.*)$ http://%{SERVER_NAME}/#cbp=http:\/\/%{SERVER_NAME}%{REQUEST_‌​URI} [R=303,L,NE] 

在我的測試機是正確的重定向。

進一步的閱讀,我建議:

+0

謝謝Takiro,我發佈了上述問題的更多信息。我正在嘗試,但它不起作用... – Javier

+0

好吧,我不完全確定,但我認爲因爲重寫基礎設置爲'/'您必須刪除第一個/從條件。將'^/portfolio-view /.*'更改爲'^ portfolio-view /.*' – Takiro

+0

相應地更改了答案。 – Takiro