【发布时间】:2013-04-06 17:37:45
【问题描述】:
我使用的是 Ubuntu 12.10。而且我无法从我的 codeigniter 站点 URL 中删除“index.php”。
我的 .htaccess 文件看起来像这样,我的代码在 hmvcExample 文件夹中。
*
RewriteEngine On
RewriteBase /hmvcExample/
### Canonicalize codeigniter URLs
# If your default controller is something other than
# "welcome" you should probably change this
RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ / [L,R=301]
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
# If you have subdomains, you can add them to
# the list using the "|" (OR) regex operator
RewriteCond %{HTTP_HOST} !^(www|subdomain) [NC]
RewriteRule ^(.*)$ http://www.domain.tld/$1 [L,R=301]
# Enforce NO www
#RewriteCond %{HTTP_HOST} ^www [NC]
#RewriteRule ^(.*)$ http://domain.tld/$1 [L,R=301]
###
# Removes access to the system folder by users.
# Additionally this will allow you to create a System.php controller,
# previously this would not have been possible.
# 'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn't true it sends the
# request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
# Without mod_rewrite, route 404's to the front controller
ErrorDocument 404 /index.php
*
我也从 config.php 中删除了“index.php”。但是当我尝试在没有“index.php”的情况下加载网站时仍然出现以下错误
未找到 在此服务器上找不到请求的 URL /hmvcExample/signup。 Apache/2.2.22 (Ubuntu) 服务器在 localhost 端口 80
请帮忙。谢谢。
【问题讨论】:
-
我看到一个结束的
</IfModule>标记,但它前面没有匹配的`。如果在您的实际 .htaccess 文件中是这种情况,您可能应该先修复它。 -
我仍然在与 htaccess 作斗争,但从看起来你正在将基础重写为 hmvcExample 然后尝试导航到 hmvcExample/signup 你不应该尝试导航到 /signup 吗?
-
在复制和粘贴 .htaccess 内容时出现了错误。文件顶部有一个打开的
标记。 -
你试过在
RewriteEngine On下面添加Options +FollowSymLinks吗? -
是的,我也尝试过 :-(.
标签: php .htaccess codeigniter url-rewriting routing