所以我试图让一个.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