.htaccess htaccess&;代码点火器中的路由问题
我已经花了3个小时试图把这件事做好,但总有一部分不起作用,所以如果有人能帮助我,我将不胜感激 我试图在htaccess中实现的目标是: 删除尾部斜杠,并强制执行www 因此,这4个示例需要显示相同的结果:.htaccess htaccess&;代码点火器中的路由问题,.htaccess,codeigniter,.htaccess,Codeigniter,我已经花了3个小时试图把这件事做好,但总有一部分不起作用,所以如果有人能帮助我,我将不胜感激 我试图在htaccess中实现的目标是: 删除尾部斜杠,并强制执行www 因此,这4个示例需要显示相同的结果: #1. www.mysite.com/products/show/ #2. www.mysite.com/products/show #3. mysite.com/products/show/ #4. mysite.com/products/show 他们都需要显示#2,因为这是正确的 有很
#1. www.mysite.com/products/show/
#2. www.mysite.com/products/show
#3. mysite.com/products/show/
#4. mysite.com/products/show
他们都需要显示#2,因为这是正确的
有很多例子和解决方案,可以做到这一点,我让它发挥作用,但是!我还在这个控制器上使用一个路由,看起来像这样:
$route['products/(:any)]=“products/show/$1”
再一次,无论是htaccess还是route都在工作,当(:any)包含斜杠(例如foo-bar)时,问题就出现了。然后突然#3失败,网站根本无法加载,出于某种奇怪的原因,url变为www.domain.tld/products/foo-bar(是的,它实际上打印了domain.tld,我没有把它作为例子。当然,这个域甚至不是有效域。)
以下是我目前在htaccess中的内容,请记住,为了加强www,我不能!硬编码实际域名,因为将有多个域指向此文档根,所有域都使用相同的脚本im构建
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
#RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ / [L,R=301]
RewriteCond $1 !^(index\.php|images|doc)
RewriteRule ^(.*)/index/?$ $1 [L,R=301]
# Removes trailing slashes (prevents SEO duplicate content issues)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]
# Enforce www
RewriteCond %{HTTP_HOST} ^([^.]+)\.([^.]+)$ [NC]
RewriteRule ^(.*)$ http://www.%1.%2/$1 [R=301,L]
感谢您的帮助
JasonWWW问题:也许您需要mysite.com的CNAME记录来指向WWW.mysite.com?根据给定的信息,这是我最好的猜测 URI路由:请记住,当/products/(:any)中的(:any)包含斜杠时,路由不再是/products/(any)。。它是/产品/(任何)/(其他东西)。这将作为URL的另一段进行处理 如果斜杠不是路由的一部分,您将无法在URL中使用带有斜杠的内容。如果只需要在URL中传递,您可以进行某种编码/解码
至于它为什么路由到domain.tld,我不知道。:) 谢谢你的回复drewjoh,我会问我的主人,看看他们是否能帮我解决这个问题。仍然在寻找htaccess解决方案。为您更新了我的答案。希望能有点帮助。谢谢,我现在已经删除了路由,改为使用_重新映射,仍然存在同样的问题。我只是向我的主机发送一个请求,让它看一看,或者添加cname。谢谢你的帮助!