Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php htaccess如何使用&x27;不要重写某些URL_Php_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Php htaccess如何使用&x27;不要重写某些URL

Php 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/([^/

各位开发者好

我正在写一个混合网站,其中包含像index.php,page1.php这样的静态页面。。。以及一个Nibbleblog,安装在静态网站所在的顶层目录中

为了在博客中启用SEO友好的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]
现在的问题是:

这对于在博客中启用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,我知道这并不理想,但它解决了这个特殊问题。