开发者

Why does my URL while using the CodeIgniter framework only work with a question mark in front of the directory?

I'm using the following code for my .htaccess for the PHP framework CodeIgniter.

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /

### Canonicalize codeigniter URLs

# If your default controller is something other than
# "welcome" you should probably change this
RewriteRule ^(welcome(/index)?|index开发者_StackOverflow(\.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]

If I type in the url http://linuxservers.org/articles The articles page does not load (the index does). However, if I type in linuxservers.org/?articles or /?/articles the page will load. I don't get it.

In addition to that, if I change the last line in the code above to

    RewriteRule ^(.*)$ index\.php/?$1 [L]

OR

    RewriteRule ^(.*)$ index\.php?/$1 [L]

(which redirects /articles to either /?articles or /?/articles, the page loads. index.php/articles loads the page as well, which is the default format for CodeIgnitor.

Hopefully that made sense, if not, ask me questions. Looking forward to your input.


Where did you get your .htaccess file from? The one on the CodeIgniter wiki has the last line as:

RewriteRule ^(.*)$ index.php?/$1 [L]

Which is one of your working options.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜