過了一兩天,我仍然與Mod Rewrite戰鬥。看來我的開發時間的60%是花在與服務器作鬥爭上的。國防部重寫忽略-d
我目前的網址結構是這樣的,所有http://example.com/xyz和http://example.com/xyz/abc應該由index.php處理。問題是我有一個http://example.com/admin/部分,這是一個真實目錄這我需要通過HTTP請求訪問的(它的CMS目錄)
當我嘗試瀏覽到CMS http://example.com/admin/,它改變了我的網址http://example.com/admin/?n=admin並返回404.我的index.php正在接收n = admin,因爲它是參數。
我不能明白的是爲什麼被忽略了這兩個條件:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !^admin(?:\/)?$
爲什麼我收到重定向到http://example.com/admin/?n=admin(而不是僅僅在http://example.com/admin/停止
Options +FollowSymlinks
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !^admin(?:\/)?$
# allow access to certain subdirectories.
RewriteRule ^admin(?:\/)?$ /admin/ [L,NC]
# redirect all old URLs to new pages (or 404 sitemap page if no analog?).
RewriteRule ^company/about(?:\/)?$ /company [R=301,L,NC]
# catch any others and try to serve them right
RewriteRule ^/?(.+).html$ /$1 [R=301,L]
RewriteRule ^/?([0-9]+)(?:\/)?$ /index.php?p=$1 [L]
RewriteRule ^/?([-a-zA-Z0-9_+]+)(?:\/)?$ /index.php?n=$1 [L]
RewriteRule ^/?([-a-zA-Z0-9_+]+)/([-a-zA-Z0-9_+]+)(?:\/)?$ /index.php?n=$2 [L]
燦任何人提供任何想法或指出.htaccess中的任何缺陷?
總結我的問題,我不能訪問服務器上存在的目錄,因爲mod重寫正在重定向我。這不應該發生,因爲我設置RewriteCond%{REQUEST_FILENAME}!-d –
問題嘗試,更改倒數第二個或最後一個規則從... php?n = ...到... phph?m = ...看看哪些規則是有效的應用。 你是說它重定向到admin /?n = admin,但你引用index.php獲取n = admin參數 –