.htaccess重定向index.php

时间:2013-11-15 06:34:45

标签: regex apache .htaccess mod-rewrite joomla

下面说明了joomla SEF在后端打开时生成SEF网址的.htaccess代码。

## Begin - Joomla! core SEF Section.
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the request is for something within the component folder,
# or for the site root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]

我有一个简单的问题,我无法理解。 我把这个条件设置为如果url是domain.com/index.php那么它应该转到domain.com,只有当模式与index.php完全匹配时才会发生这种情况。 但是,所有网址都会出现这种情况。

RewriteCond %{THE_REQUEST} [^.]*|/(index.php)$
RewriteRule ^index.php$ / [R=301,L]

1 个答案:

答案 0 :(得分:0)

  

it should go to domain.com and this should happen only if the pattern matches exactly as index.php. However this happens for all urls.

这是由于你正在使用错误的正则表达式。使用此规则从URI中删除index.php

RewriteCond %{REQUEST_URI} !/administrator [NC]
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php$ /$1 [L,R=302,NC,NE]