Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess htaccess&;代码点火器中的路由问题_.htaccess_Codeigniter - Fatal编程技术网

.htaccess htaccess&;代码点火器中的路由问题

.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,因为这是正确的 有很

我已经花了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,因为这是正确的

有很多例子和解决方案,可以做到这一点,我让它发挥作用,但是!我还在这个控制器上使用一个路由,看起来像这样: $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]
感谢您的帮助


Jason

WWW问题:也许您需要mysite.com的CNAME记录来指向WWW.mysite.com?根据给定的信息,这是我最好的猜测

URI路由:请记住,当/products/(:any)中的(:any)包含斜杠时,路由不再是/products/(any)。。它是/产品/(任何)/(其他东西)。这将作为URL的另一段进行处理

如果斜杠不是路由的一部分,您将无法在URL中使用带有斜杠的内容。如果只需要在URL中传递,您可以进行某种编码/解码


至于它为什么路由到domain.tld,我不知道。:)

谢谢你的回复drewjoh,我会问我的主人,看看他们是否能帮我解决这个问题。仍然在寻找htaccess解决方案。为您更新了我的答案。希望能有点帮助。谢谢,我现在已经删除了路由,改为使用_重新映射,仍然存在同样的问题。我只是向我的主机发送一个请求,让它看一看,或者添加cname。谢谢你的帮助!