1
我使用的Apache2以下的(好).htaccess
在我的網站的根目錄,合併新的mod_rewrite規則並保留舊的行爲,出了什麼問題?
#OLD (GOOD, IS WORKING!)
# If requested url is an existing file or folder, don't touch it
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule . - [L]
RewriteRule ^(urn|URN):(.+)$ index.php?urn=$2 [L]
RewriteRule ^([a-zA-Z\d\-]+)$ index.php?obj=$1 [L]
現在我需要合併的文件夾的新條件XWiki實現
#NEW: some conflicts, how to preserve old and add /xWiki* behaviour?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^xWiki/?(.*)$ /xWiki/index.php?title=$1 [L,QSA]
如何「合併「保留舊的行爲除了/xWiki
?
只有加入RewriteRule ^xWiki/?(.*)$
沒有行爲和!-f
與同-f
COND衝突......
Plase閱讀這個問題,正如我所說,「只添加RewriteRule'^ xWiki/?(.*)$'不起作用」...請解釋爲什麼您認爲它必須工作,或者更多可以錯了,不適合我。 – 2015-02-07 08:16:19
你真的相信我沒有閱讀而回答嗎?爲什麼我相信這個答案是有效的,因爲有兩個原因:1)正確的規則順序,其中'xwiki'規則必須在第一個忽略規則之後,2)規則中正確的正則表達式,其中'^ xWiki/?(.*)$'將會也可以匹配'/ xWiki-123-foo'不只是'/ xWiki /' – anubhava 2015-02-07 08:19:04
真正的問題是正則表達式xWiki /(.*)'不僅僅匹配'/ xWiki/abc'它也匹配重寫的URI,即'/ xWiki/index.php'沒有'RewriteCond%{REQUEST_FILENAME}!-f'條件的保護。因爲我將它放在'file/folder'規則的下面,這就是爲什麼它沒有'RewriteCond%{REQUEST_FILENAME}!-f'條件就會工作。 – anubhava 2015-02-07 08:30:52