Php htaccess如何使用&x27;不要重写某些URL
各位开发者好 我正在写一个混合网站,其中包含像index.php,page1.php这样的静态页面。。。以及一个Nibbleblog,安装在静态网站所在的顶层目录中 为了在博客中启用SEO友好的URL,我向htaccess添加了Nibbleblog推荐的以下重写规则 RewriteBasePhp htaccess如何使用&x27;不要重写某些URL,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,各位开发者好 我正在写一个混合网站,其中包含像index.php,page1.php这样的静态页面。。。以及一个Nibbleblog,安装在静态网站所在的顶层目录中 为了在博客中启用SEO友好的URL,我向htaccess添加了Nibbleblog推荐的以下重写规则 RewriteBase/eurotint/new-euroting/app/是我当前的本地开发目录 RewriteBase /eurotint/new-euroting/app/ RewriteRule ^category/([^/
/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]
现在的问题是:
这对于在博客中启用SEO友好的URL是很好的,但是,如果我输入了博客文章的地址,例如。
网址/eurotint/new euroting/app/post/welcome post/
然后,每当我在这个或其他博客页面上点击其中一个静态页面地址(索引、第1页、第2页),即类别等
重写规则将地址重定向到类似以下内容:
网址/eurotint/new-euroting/app/post/welcome-post/index.php
但我不希望重新写入静态地址,即单击主页按钮应将我带到索引页面网址/eurotint/new-euroting/app/index.php而不是网址/eurotint/new-euroting/app/post/welcome-post/index.php
我尝试了一些301重定向文件的名称,我不想重定向到博客页面,但没有一个工作和tbh。我不是Apache重写规则方面的专家
此外,静态站点的所有图像URL等也正在被重新写入,而在博客文章/类别中,我想也停止这样做,只重新写入与博客相关的URL
任何关于如何实现这一目标的帮助都将不胜感激,谢谢 最好的处理方法可能是使用文件和目录条件,但因为
RewriteCond
只影响next规则,您需要在每个规则之前添加这些条件,或者创建一个跳过规则:
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
)说明,如果请求的文件名是文件或目录-,那么它应该跳过所有重写规则
这假设您定义的重写匹配项中没有一个指向实际存在的文件/目录(例如,您实际上没有名为feed的目录)。您好,谢谢您的回答,我已经尝试了您的建议,但是我无法让它工作。我最终使用了导航栏中的完整网址来解决这个问题,即我使用了https://www.webaddress。com/filleurl,我知道这并不理想,但它解决了这个特殊问题。