2016-10-04 96 views
1

我设置的网站比我通常使用定制的CMS系统稍微复杂一些,并且遇到了绊脚石。Mod_rewrite - .htaccess中的多条规则

基本上就是我想实现的是一个简单的顶级页面结构,网址是干净如下:

http://www.mywebsite.com/page.php?page_url=val1

http://www.mywebsite.com/val1

通常不是问题,但现有的.htaccess已经有几个RewriteRules存在,并且任何添加RewriteRule的变体都会冲突并阻止选择页面的工作。

尝试变化周围...

RewriteCond %{QUERY_STRING} ^page=(.+) 
RewriteRule ^$ /%1? [R=301,L] 

没有快乐。

我是否需要重新思考我的策略,或者是否存在某些我只是简单忽略的内容?

我应该朝着使顶层目录页“market.php”做工作,在#重写指定要重新考虑市场层面改写

我现有的.htaccess是如下,经过彻底工作正常测试,但更改为包含新的顶级页面会导致错误。

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
# Force search engines to use www 
RewriteCond %{HTTP_HOST} !^www\.mywebsite\.com$ 
RewriteRule ^(.*) http://www.mywebsite.com/$1 [R=301,L] 
# Specify MARKET LEVEL rewrite 
RewriteRule ^top-level-category-1$ /market.php?p=top-level-category-1 [L] 
RewriteRule ^top-level-category-2$ /market.php?p=top-level-category-2 [L] 
RewriteRule ^top-level-category-3$ /market.php?p=top-level-category-3 [L] 
RewriteRule ^top-level-category-4$ /market.php?p=top-level-category-4 [L] 
RewriteRule ^top-level-category-5$ /market.php?p=top-level-category-5 [L] 
RewriteRule ^top-level-category-6$ /market.php?p=top-level-category-6 [L] 
Options +FollowSymLinks 
# Specify OFFER LEVEL rewrite 
RewriteRule offer/(.*)/ offer.php?p=$1 
RewriteRule offer/(.*) offer.php?p=$1 
# Specify CLAIM OFFER LEVEL rewrite 
RewriteRule get-offer/(.*)/ reveal.php?claim=$1 
RewriteRule get-offer/(.*) reveal.php?claim=$1 
# Specify CLAIM EVENT LEVEL rewrite 
RewriteRule event-bonus/(.*)/ reveal-event.php?claim=$1 
RewriteRule event-bonus/(.*) reveal-event.php?claim=$1 
# Specify SEARCH LEVEL rewrite 
RewriteRule search/(.*)/ search.php?p=$1 
RewriteRule search/(.*) search.php?p=$1 
# Specify EVENT LEVEL rewrite 
RewriteRule offers/(.*)/ offers.php?p=$1 
RewriteRule offers/(.*) offers.php?p=$1 
# Specify BLOG LEVEL rewrite 
RewriteRule blog/(.*)/ blog.php?p=$1 
RewriteRule blog/(.*) blog.php?p=$1 
RewriteRule view-blog/(.*)/ view-blog.php?p=$1 
RewriteRule view-blog/(.*) view-blog.php?p=$1 
# Specify EXPIRED OFFER LEVEL rewrite 
RewriteRule offer-expired/(.*)/ offer-expired.php?p=$1 
RewriteRule offer-expired/(.*) offer-expired.php?p=$1 

回答

0

尝试在你的.htaccess

RewriteEngine On 
RewriteRule ^([^/]*)$ /page.php?page_url=$1 [L] 

使用该RewriteRule应该离开你你想要的网址。

+0

它不起作用。在现有的.htaccess中进行测试,并且没有页面加载 – Lee

+0

@请看thickguru所说的应该如何工作,因为它是正确的.htaccess,就像你说的那样。我想如果不是那么它应该是在你现有的计算机上覆盖它或忽略这个规则的问题。你把他在htaccess文件的顶部说了什么? –