在 Joomla 2.5 中激活 SEO 设置后出错

Posted

技术标签:

【中文标题】在 Joomla 2.5 中激活 SEO 设置后出错【英文标题】:Error after activating SEO Settings in Joomla 2.5 【发布时间】:2012-07-06 11:45:07 【问题描述】:

我正在为 Joomla 2.5 使用 Shape5 企业响应模板

为了让我激活 SEO freidnly 网站,我必须: 1-将 htaccess.txt 更改为 .htaccess 2- 在全局配置中将搜索引擎友好 URL 从 No 更改为 Yes 3- 将使用 URL 重写从否更改为是

之后模板运行,但我创建的菜单不起作用,当我点击它时,它说:

找不到

在此服务器上找不到请求的 URL /联系人。

此外,在尝试访问时遇到 404 Not Found 错误 使用 ErrorDocument 来处理请求。

我已经做过这个测试: http://docs.joomla.org/How_to_check_if_mod_rewrite_is_enabled_on_your_server

并且我的 mod 重写已启用。

我还在 htaccess 中将“# RewriteBase /”编辑为“RewriteBase /”,但没有运气。

这是我的 htaccess:

> # @package        Joomla
> # @copyright  Copyright (C) 2005 - 2012 Open Source Matters. All rights reserved.
> # @license        GNU General Public License version 2 or later; see LICENSE.txt
> ##
> 
> ##
> # READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
> #
> # The line just below this section: 'Options +FollowSymLinks' may cause problems
> # with some server configurations.  It is required for use of mod_rewrite, but may already
> # be set by your server administrator in a way that dissallows changing it in
> # your .htaccess file.  If using it causes your server to error out, comment it out (add # to
> # beginning of line), reload your site in your browser and test your sef url's.  If they work,
> # it has been set by your server administrator and you do not need it set here.
> ##
> 
> ## Can be commented out if causes errors, see notes above. Options +FollowSymLinks
> 
> ## Mod_rewrite in use.
> 
> RewriteEngine On
> 
> ## Begin - Rewrite rules to block out some common exploits.
> # If you experience problems on your site block out the operations listed below
> # This attempts to block the most common type of exploit `attempts` to Joomla!
> #
> # Block out any script trying to base64_encode data within the URL. RewriteCond %QUERY_STRING base64_encode[^(]*\([^)]*\) [OR]
> # Block out any script that includes a <script> tag in URL. RewriteCond %QUERY_STRING (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
> # Block out any script trying to set a php GLOBALS variable via URL. RewriteCond %QUERY_STRING GLOBALS(=|\[|\%[0-9A-Z]0,2) [OR]
> # Block out any script trying to modify a _REQUEST variable via URL. RewriteCond %QUERY_STRING _REQUEST(=|\[|\%[0-9A-Z]0,2)
> # Return 403 Forbidden header and show the content of the root homepage RewriteRule .* index.php [F]
> #
> ## End - Rewrite rules to block out some common exploits.
> 
> ## Begin - Custom redirects
> #
> # If you need to redirect some pages, or set a canonical non-www to
> # www redirect (or vice versa), place that code here. Ensure those
> # redirects use the correct RewriteRule syntax and the [R=301,L] flags.
> #
> ## End - Custom redirects
> 
> ##
> # Uncomment following line if your webserver's URL
> # is not directly related to physical file paths.
> # Update Your Joomla! Directory (just / for root).
> ##
> 
> # RewriteBase /
> 
> ## 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 ^GET
> # 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]
> #
> ## End - Joomla! core SEF Section.

我该如何解决这个问题?

【问题讨论】:

呃,看起来你的整个.htaccess 文件归结为一行:RewriteEngine On。这可能是一个没有任何进一步指令的空操作。 我用这个 .htaccess 代码修复了它 【参考方案1】:

我找到了解决方案,只需在您的 .htaccess 文件中添加替换此代码:

AddHandler x-httpd-php5 .php
AddHandler x-httpd-php .php4
##
# @version $Id: htaccess.txt 14401 2010-01-26 14:10:00Z louis $
# @package Joomla
# @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! is Free Software
##


#####################################################
#  READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations.  It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file.  If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's.  If they work,
# it has been set by your server administrator and you do not need it set here.
#
#####################################################

##  Can be commented out if causes errors, see notes above.
Options +FollowSymLinks

#
#  mod_rewrite in use

RewriteEngine On

########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
## Deny access to extension xml files (uncomment out to activate)
#<Files ~ "\.xml$">
#Order allow,deny
#Deny from all
#Satisfy all
#</Files>
## End of deny access to extension xml files
RewriteCond %QUERY_STRING mosConfig_[a-zA-Z_]1,21(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %QUERY_STRING base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %QUERY_STRING (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %QUERY_STRING GLOBALS(=|\[|\%[0-9A-Z]0,2) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %QUERY_STRING _REQUEST(=|\[|\%[0-9A-Z]0,2)
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - Rewrite rules to block out some common exploits

#  Uncomment following line if your webserver's URL
#  is not directly related to physical file paths.
#  Update Your Joomla! Directory (just / for root)

RewriteBase /


########## Begin - Joomla! core SEF Section
#
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_URI !^/index.php
RewriteCond %REQUEST_URI (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%HTTP:Authorization,L]
#
########## End - Joomla! core SEF Section

【讨论】:

以上是关于在 Joomla 2.5 中激活 SEO 设置后出错的主要内容,如果未能解决你的问题,请参考以下文章

如何自定义 Joomla 2.5 联系人组件?

Joomla 2.5 组件实现

使 Joomla 组件与 SEF/SEO 兼容

Joomla 2.5 Uncaught ReferenceError:Joomla未定义

Joomla 注册和激活

在 Joomla 2.5 中使用 Jquery 选择一个类