如何重定向/重写包含特定字符串的所有网址?

时间:2012-03-04 19:39:27

标签: php .htaccess url redirect joomla-sef-urls

这让我难倒了好几天。任何帮助将不胜感激。

我认为htaccess可能是我需要的最佳方式,但如果你有不同的解决方案,我很高兴听到它。

我正在使用joomla作为我的CMS,现在我有一个.htacces文件,它将获取所有网址并将它们发送到我网站的社区组件。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /index.php?option=com_comprofiler&task=userProfile&user='$1' [L]


# RewriteRule ^(.*) index.php?cb_username=$1
RewriteCond %{REQUEST_FILENAME} !.(jpg|jpeg|gif|png|css|js|pl|txt)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php

但是,这会重定向每个没有与之关联的目录或文件的网址。

我需要的是htaccess文件只有在包含字符串“community / profile / user”时才重定向URLS

我仍然认为自己是菜鸟,我已经花了很多天时间试图解决这个问题。

希望其他人可以在这里阐明这个问题。 下面是我的.htaccess文件的完整代码

 ##
# @version $Id: htaccess.txt 1005 2006-10-05 18:00:00Z stingrey $
# @package Joomla
# @copyright Copyright (C) 2006 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! is Free Software
##
Options +FollowSymLinks
#
# mod_rewrite in use
#
RewriteEngine On
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update YourJoomlaDirectory (just / for root)

RewriteBase /

#
# Rules
#
#
# ProfileRedirector V 1.3
#
# Make sure your host allows option override
# and has ModRewrite installed

# activate Rewrite enginge

RewriteEngine On


RewriteBase /

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /index.php?option=com_comprofiler&task=userProfile&user='$1' [L]


# RewriteRule ^(.*) index.php?cb_username=$1
RewriteCond %{REQUEST_FILENAME} !.(jpg|jpeg|gif|png|css|js|pl|txt)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php

1 个答案:

答案 0 :(得分:0)

首先,您应该删除双RewriteBaseRewriteEngine

现在,你的意思是这样的:

Options +FollowSymLinks
RewriteBase /

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} \.(jpg|jpeg|gif|png|css|js|pl|txt)$
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ $1 [L]

RewriteRule ^(.*)community/profile/user/(.*)$ index.php?option=com_comprofiler&task=userProfile&user=$2 [L]

第一次重写不应该改变所有图像文件的路径。如果网址包含community/profile/user/,则会将网址重写为index.php?option=com_comprofiler&task=userProfile&user={what-comes-after-user/}

你应该非常小心你用.htaccess写的东西,因为一个简单的空格或缺少的资本可能会导致致命的错误而不加载任何页面。

我希望这会对你有所帮助。