我試圖使用apaches mod_rewrite模塊將目錄/ docs中的所有URI重寫爲/docs/index.php。mod_rewrite在RewriteCond目標上不匹配 - 找不到URL
該URI不存在作爲一個目錄結構,當我將URI重寫爲某個退出的內容時,我認爲這是不必要的。
我收到錯誤:
"The requested URL /docs/view/my_doc was not found on this server."
這些都是我重寫規則:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^docs/([a-z]+)/([A-Za-z0-9_-]+)/?$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/docs/index.php?action=$1&target=$2 [QSA,L]
我做在httpd.conf配置。另外,我正在使用多v主機設置。
我的問題是什麼?如何解決?
我使用的是在CentOS 6.2的Apache/httpd的
UPDATE
包括我的虛擬主機,以及:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.smicloud.org
ServerAlias *.smicloud.org
VirtualDocumentRoot /var/www/html/www.smicloud.org
ExpiresActive On
ExpiresDefault "access plus 14 days"
# insert logging config, anything else you need..
#Define FileEtag so it doesnt use node
FileETag MTime Size
<Directory /var/www/html/>
Order Allow,Deny
Allow from all
# Get rid of this if you need to allow htaccess files:
AllowOverride None
</Directory>
RewriteEngine On
RewriteRule ^docs/([a-z]+)/([A-Za-z0-9_-]+)/$ /docs/index.php?action=$1&target=$2 [QSA,L]
</VirtualHost>
如果你用')/?$'而不是''$''結束目標字符串,如果你有一個結尾的斜線,它會匹配。 – MidnightLightning
是的,你真的在你的例子中有這個,忘了它。當然這更好。更新我的答案。謝謝! – Nicsoft