我想知道如何使用htaccess将动态URL与静态URL匹配。我的代码如下: -
我的php功能: -
public static function ToTagLinks($tags, $page = 1){
$tags = explode(',', $tags);
foreach ($tags as &$tag) {
//$link ='tagged/'.self::CleanUrlText($tag);
$link ='index.php?TagSearchResults&TagName='.self::CleanUrlText($tag) ;
if($page > 1)
$link .='&Page='.$page;
$tag = '<a class="taglist" href="'.self::Build($link).
'" title="show post tagged ' . $tag . '">' . $tag . '</a>';
}
return implode(', ', $tags);
}
我的htaccess文件:
<IfModule mod_rewrite.c>
# Enable mod_rewrite
RewriteEngine On
# Specify the folder in which the application resides.
# Use / if the application is in the root.
RewriteBase /rswebtek_blog
# Rewrite to correct domain to avoid canonicalization problems
# RewriteCond %{HTTP_HOST} !^www\.example\.com
# RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
# Rewrite URLs ending in /index.php or /index.html to /
RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php|html?)\ HTTP
RewriteRule ^(.*)index\.(php|html?)$ $1 [R=301,L]
# Rewrite category pages
RewriteRule ^.*-c([0-9]+)/page-([0-9]+)/?$ index.php?CategoryId=$1&Page=$2 [L]
RewriteRule ^.*-c([0-9]+)/?$ index.php?CategoryId=$1 [L]
#Redirect search results
RewriteRule ^search-results/find-(.*)/page-([0-9]+)/?$ index.php?SearchResults&SearchString=$1&Page=$2[L]
RewriteRule ^search-results/find-?(.*)//?$ index.php?SearchResults&SearchString=$1&Page=1 [L]
#Redirect tag search results
RewriteRule ^tagged/(.*)/page-([0-9]+)/?$ index.php?TagSearchResults&TagName=$1&Page=$2[L]
RewriteRule ^tagged/?(.*)//?$ index.php?TagSearchResults&TagName=$1&Page=1 [L]
# Rewrite subpages of the home page
RewriteRule ^page-([0-9]+)/?$ index.php?Page=$1 [L]
# Rewrite Post details pages
RewriteRule ^.*-p([0-9]+)/?$ index.php?PostId=$1 [L]
</IfModule>
# Set the default 500 page for Apache errors
ErrorDocument 500 /rswebtek_blog/500.php
#Set the defualt 404 error page
ErrorDocument 404 /rswebtek_blog/404.php
我的其他链接工作正常,但此代码用于标记搜索链接无法正常工作404.php错误发生但如果我使用动态网址其工作正常。
答案 0 :(得分:1)
请尝试以下两条规则:
#Redirect tag search results
RewriteRule ^tagged/([^/]+)/page-(\d+)/?$ index.php?TagSearchResults&TagName=$1&Page=$2 [L,QSA]
RewriteRule ^tagged/([^/]+)/?$ index.php?TagSearchResults&TagName=$1&Page=1 [L,QSA]