我有以下规则,一个“我们的商店”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中删除目录
基于Accept-Language的redirect
部分页面强制使用https,其他使用http
.htaccess带有多个可选参数的mod_rewrite url
谢谢。
无法获取.htaccess mod_rewrite规则工作 – 404找不到
如何在.htaccess中从一个子域redirect到另一个子域?
将所有通配符子域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] 举报,一经查实,本站将立刻删除。