微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么如果我在我的htaccess的规则中join“ – ”破折号不起作用?

我有以下规则,一个“我们的商店”redirect到另一个“PLAIN PAGES”规则的地方:

Options +FollowSymlinks RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RedirectMatch 302 /construction.html http://www.{website}.com/construction-services RedirectMatch 302 /construction/endless-pools.html http://www.{website}.com/construction-services/endless-pools # PRODUCT AND SERVICES RewriteCond %{REQUEST_URI} !.html$ RewriteRule ^(.*)/(.*)$ /rewrite.PHP?sub=$1&second=$2 [NC] # PLAIN PAGES #RewriteRule ^/$ /index.PHP [L,NC] RewriteRule ^signup-free$ /signup-free.PHP [L,NC] RewriteRule ^about$ /content.PHP?page=1 [L,NC] RewriteRule ^links$ /content.PHP?page=2 [L,NC] RewriteRule ^portfolio$ /portfolio.PHP [L,NC] RewriteRule ^our-stores$ /our-stores.PHP [L,NC] RewriteRule ^contact$ /contact.PHP [L,NC] RewriteRule ^products-list$ /lists.PHP?action=products [L,NC] RewriteRule ^services-list$ /lists.PHP?action=services [L,NC]

当我键入/our-stores apacheredirect到: /our-stores/?sub=our-stores&second=

我没有得到它,因为其余(注册免费,关于,链接,组合…等)工作正常。

有人能帮我这个吗?

从urlhtaccess apache中删除目录

Nginx的子目录中运行辅助PHP应用程序

基于Accept-Language的redirect

分页面强制使用https,其他使用http

.htaccess带有多个可选参数的mod_rewrite url

谢谢。

无法获取.htaccess mod_rewrite规则工作 – 404找不到

如何在.htaccess中从一个子域redirect到另一个子域?

使用.htaccess从URL中删除'index.PHP'

将所有通配符子域redirect到根域

htaccess重写replace空间 –

通用规则已移至底部,并且REQUEST_FILENAME条件移至静态重定向之下。 此外,我添加一个/? 以匹配每个特定重定向上的可选结尾斜杠。 最后,通用规则被改进为不使用,而是以一种不那么贪婪的方式匹配所有的东西。 然后在/之后使用.+来确保至少存在一个字符。 带有斜线的网址因此不符合。 如果你有一些没有second=泛型,改回.* 。

所有这些在htaccess测试中都能正常工作。

RedirectMatch 302 /construction.html http://www.{website}.com/construction-services RedirectMatch 302 /construction/endless-pools.html http://www.{website}.com/construction-services/endless-pools RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^signup-free/?$ /signup-free.PHP [L,NC] RewriteRule ^about/?$ /content.PHP?page=1 [L,NC] RewriteRule ^links/?$ /content.PHP?page=2 [L,NC] RewriteRule ^portfolio/?$ /portfolio.PHP [L,NC] RewriteRule ^our-stores/?$ /our-stores.PHP [L,NC] RewriteRule ^contact/?$ /contact.PHP [L,NC] RewriteRule ^products-list/?$ /lists.PHP?action=products [L,NC] RewriteRule ^services-list/?$ /lists.PHP?action=services [L,NC] # PRODUCT AND SERVICES RewriteCond %{REQUEST_URI} !.html$ RewriteRule ^([^/]+)/(.+)$ /rewrite.PHP?sub=$1&second=$2 [NC]

符号“ – ”是正则表达式中的一个特殊字符。 它定义了一个范围(az,à-9等)。

尝试逃避它。

RewriteRule ^our-stores$ /our-stores.PHP [L,NC]

我怀疑你有一个实际的文件(或更可能是一个空的目录)命名our-stores 。

这将触发RewriteCond %{REQUEST_FILENAME} !-d ,导致它不能重写。

然后它会尝试从该目录(例如index.PHP)加载页面,该页面不存在,因此它会尝试重写,导致添加?sub=our-stores&second=参数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐