我将所有网址请求指向前端控制器。网址请求类似example.com/controller/action/etc
。问题是,在程序中使用相对URL。如果url请求中只有一个斜杠,则此方法正常,但如果有多个斜杠,则相对url会被破坏。
在地理位置example.com/controller
,相对网址other-controller
可以很好地将用户带到example.com/other-controller
。
在地理位置example.com/controller/action
,相对网址other-controller
无法将用户带到example.com/controller/other-controller
。
有关如何解决此问题的任何建议?希望我可以在不使用绝对路径或每次我想在应用程序中创建网址时生成代码的情况下执行此操作。
如果重要,我目前正在使用此.htaccess代码将命令请求重定向到前端控制器:
# Point all to index.php except existing files
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
答案 0 :(得分:1)
您将需要使用绝对URL来执行您想要的操作,而无需查看当前路径并添加适当数量的..
。您不需要为每个域提供域名,只需使用/controller/action
和/other-controller/action
等网址即可。这些将无缝地适用于两个控制器。示例锚标记:
<a href="/controller/action">Do something!</a>
作为旁注,人们通常会编写函数来生成URL。如果您使用的是MVC框架,则可能采用向模型添加方法的形式,并调用函数get_absolute_url
,该函数返回上面提到的表单。