所以我試圖讓一個.htaccess文件工作,重新映射我的Web服務的一些URL。我有下面的代碼在我的.htaccess文件:mod_rewrite重新映射不工作
# General Settings
Options +FollowSymLinks -Indexes
Allow from all
AddCharset utf-8 .css .html .php
RewriteEngine on
RewriteBase/
# Option 1: Remove Index.php from URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
# Custom Options: Webservices
RewriteRule ^applications/([0-9]+)/infobox\.xml$ app/makeInfoBox/$1/ [L]
刪除的index.php工作得很好,所以我認爲mod_rewrite的正常工作。但爲什麼我的Web服務規則不起作用?
它應該重映射https://example.com/applications/258/infobox.xml到https://example.com/app/makeInfoBox/258/或不應該嗎?
當我添加[R]標誌它可以工作,但我不想URL重定向,我希望它重新映射。
感謝您的回答!
編輯: 所以經過一些測試後,我達到了我真的沒有想法的地步。這是我的mod_rewrite代碼:
# General Settings
AddCharset utf-8 .css .html .php
RewriteEngine on
RewriteBase/
# Custom Options: Webservices
RewriteRule ^applications/([0-9]+)/infobox\.xml$ app/makeInfoBox/$1/ [DPI]
# Option Remove Index.php from URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
我現在已經記錄與高日誌級別激活。這裏是被記錄:
附加路徑信息後綴:在/ etc/apache2的/ htdocs中/ web服務/應用程序 - > /etc/apache2/htdocs/webservices/applications/258/infobox.xml
條per- dir前綴:/etc/apache2/htdocs/webservices/applications/258/infobox.xml - > applications/258/infobox.xml
應用模式'^ applications /([0-9] +)/ infobox \。 XML $」到URI '應用程序/ 258/infobox.xml'
改寫 '應用/ 258/infobox.xml' - > '應用程序/ makeInfoBox/258 /'
添加每-dir的前綴:應用程序/ makeInfoBox/258/- >的/ etc/apache2的/ htdocs中/ web服務/應用/ makeInfoBox/258/
條每-DIR前綴:在/ etc/apache2的/ htdocs中/ web服務/應用程序/ makeInfoBox/258/- >應用程序/ makeInfoBox/258/
施加模式 '(。*)^ $' 到URI '應用程序/ makeInfoBox/258 /'
的RewriteCond:輸入='的/ etc /的apache2/htdocs中/ web服務/應用/ makeInfoBox/258 /」模式= ' - ˚F!'=>匹配
的RewriteCond:輸入= '的/ etc/apache2的/ htdocs中/ web服務/應用/ makeInfoBox/258 /' 圖案= '!-d'=>匹配
重寫 '應用程序/ makeInfoBox/258 /' - > '/index.php?/app/makeInfoBox/258/'
分裂URI =/index.php的/應用/ makeInfoBox/258 /? - > URI =/index.php的,ARGS = /應用/ makeInfoBox/258/
試圖取代前綴的/ etc/apache2的/ htdocs中/ web服務/使用/
試圖取代上下文的docroot的/ etc/apache2的/ htdocs中/ webservices with context prefix
使用/index.php進行內部重定向[INTERNAL REDIRECT]
strip per-dir prefix:/etc/apache2/htdocs/webservices/index.php - > index。PHP
施加圖案 '^應用/([0-9] +)/信息框\ .XML $' 到URI '的index.php'
條每-DIR前綴:在/ etc/apache2的/ htdocs中/ web服務/ index.php的 - >的index.php
施加模式 '(。*)^ $' 到URI '的index.php'
的RewriteCond:輸入='的/ etc/apache2的/ htdocs中/ web服務/索引.php'pattern ='! - f'=>不匹配
通過/etc/apache2/htdocs/webservices/index.php
比較重定向和重映射時的日誌輸出顯示它幾乎完全相同。
我在做什麼錯?
我綁了,但不是它周圍的錯誤的方式? 我希望當我訪問https://example.com/applications/258/infobox.xml時,mod_rewrite將它本地映射到https://example.com/app/makeInfoBox/258/,但不會更改URL。 我的服務器上有CodeIgniter,URl是我的其中一個函數(controller(app) - > methode(makeInfoBox) - > Parameter(id = 258))的路徑 – Fuerro
你輸入瀏覽器的URL什麼是原始網址請分開提及? –
我輸入https://example.com/applications/258/infobox.xml,我的apache應該將它映射到我的CodeIgniter函數,該函數將我們的一個應用程序(ID爲258的應用程序)的數據保存在公司的CMDB以XML格式(如https://example.com/app/makeInfoBox/258/)。所以我嘗試訪問的xml文件Infobox.xml並不完全存在,它只是函數的輸出。 – Fuerro