1

下面说明了当 joomla SEF 在后端打开时生成 SEF url 的 .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]
4

1 回答 1

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.

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

RewriteCond %{REQUEST_URI} !/administrator [NC]
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php$ /$1 [L,R=302,NC,NE]
于 2013-11-15T07:19:25.360 回答