htaccess如何不重写某个URL

问题描述:

嗨同行开发者。htaccess如何不重写某个URL

我正在写一个混合网站,其中包含静态网页,如index.php,page1.php ...和一个Nibbleblog,安装在静态网站所在的*目录中。

为了在博客中启用搜索引擎优化友好的URL,我已经添加到htaccess以下Nibbleblog推荐的重写规则。

的RewriteBase /eurotint/new-euroting/app/是我目前的本地开发目录

RewriteBase /eurotint/new-euroting/app/ 
RewriteRule ^category/([^/]+)/page-([0-9]+)$ blog.php?controller=blog&action=view&category=$1&number=$2 [L] 
RewriteRule ^category/([^/]+)/$ blog.php?controller=blog&action=view&category=$1&number=0 [L] 
RewriteRule ^tag/([^/]+)/page-([0-9]+)$ blog.php?controller=blog&action=view&tag=$1&number=$2 [L] 
RewriteRule ^tag/([^/]+)/$ blog.php?controller=blog&action=view&tag=$1&number=0 [L] 
RewriteRule ^page-([0-9]+)$ blog.php?controller=blog&action=view&number=$1 [L] 
RewriteRule ^post/([^/]+)/$ blog.php?controller=post&action=view&post=$1 [L] 
RewriteRule ^post-([0-9]+)/(.*)$ blog.php?controller=post&action=view&id_post=$1 [L] 
RewriteRule ^page/([^/]+)/$ blog.php?controller=page&action=view&page=$1 [L] 
RewriteRule ^feed/$ feed.php [L] 
RewriteRule ^([^/]+)/$ blog.php?controller=page&action=$1 [L] 

现在的问题:

这是为了使搜索引擎友好的URL在博客做工精细,但是,如果我有,例如进入与地址即博客文章,即 websiteAddress/eurotint/new-euroting/app/post/welcome-post/

然后每当我点击静态页面地址(指数,第1页,第2页),同时在这个或其他博客页面即类等的一个

重写规则地址重定向到类似于: websiteAddress/eurotint /新euroting/app/post/welcome-post/index.php

但我不想重写静态地址,即点击主页按钮应该带我索引页面websiteAddress/eurotint/new -euroting/app/index.php而不是websiteAddress/eurotint/new-euroting/app/post/welcome-post/index.php

我已经尝试了一些301重定向文件的名称,我不想重定向到博客页面,但他们都没有工作和tbh。我不擅长Apache重写规则。

此外,静态网站的所有图像网址等也正在重写,而在博客帖子/类别中,我也想停止它,并且只重新编写与该网站相关的网址博客。

任何帮助如何实现这一点将非常感谢,谢谢。

可能做的最好的办法是用文件目录条件 - 但因为RewriteCond仅影响下一个规则,你要么需要每个规则前添加这些条件,或创建一个的跳越规则:

RewriteBase /eurotint/new-euroting/app/ 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .* - [S=10] 
RewriteRule ^category/([^/]+)/page-([0-9]+)$ blog.php?controller=blog&action=view&category=$1&number=$2 [L] 
RewriteRule ^category/([^/]+)/$ blog.php?controller=blog&action=view&category=$1&number=0 [L] 
RewriteRule ^tag/([^/]+)/page-([0-9]+)$ blog.php?controller=blog&action=view&tag=$1&number=$2 [L] 
RewriteRule ^tag/([^/]+)/$ blog.php?controller=blog&action=view&tag=$1&number=0 [L] 
RewriteRule ^page-([0-9]+)$ blog.php?controller=blog&action=view&number=$1 [L] 
RewriteRule ^post/([^/]+)/$ blog.php?controller=post&action=view&post=$1 [L] 
RewriteRule ^post-([0-9]+)/(.*)$ blog.php?controller=post&action=view&id_post=$1 [L] 
RewriteRule ^page/([^/]+)/$ blog.php?controller=page&action=view&page=$1 [L] 
RewriteRule ^feed/$ feed.php [L] 
RewriteRule ^([^/]+)/$ blog.php?controller=page&action=$1 [L] 

的条件(RewriteCond)状态,如果所请求的文件名文件目录 - skip the next 10 rules,S它应该跳过你所有的重写规则。

这里假定您定义的重写匹配都不指向实际存在的文件/目录(例如,您实际上没有名为的目录源)。

+0

嗨,谢谢你的回答,我已经尝试了你的建议,但是我无法让它工作。我已经结束了在导航栏中使用完整网址的方式来解决此问题,即我使用了https:// www。 webaddress。 com/filreUrl,我知道这并不理想,但它解决了这个特殊问题。 – Kugarek