.htaccess 需要避免特定文件夹上的htaccess规则

vnjpjtjt  于 2022-11-16  发布在  其他
关注(0)|答案(2)|浏览(212)

我已经搜索了stackoverflow和许多网站的答案。所以请不要开枪打我,如果它已经回答了stackoverflow。我卡住了。
我想添加斜线到一个特定的网址。

www.example.com/ppc/photo/sd-xxx to 
www.example.com/ppc/photo/sd-xxx/

但是我已经在我的htaccess代码中使用了移除斜杠htaccess代码

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /(.*)/$
RewriteRule ^ /%1 [R=301,L]

我只想在特定的文件夹URL上添加斜杠,原因是它们已经添加到Adsense上,所以我们不想更改该URL。

ukqbszuj

ukqbszuj1#

您可以在该文件夹中添加特定的.htaccess,也可以使用所需的规则向主.htaccess添加指令

snvhrwxg

snvhrwxg2#

您可以在根.htaccess文件顶部附近执行类似以下的操作:

# Identify specific URLs to which a trailing slash should be added
RewriteCond %{REQUEST_URI} ^/ppc/photo/sd-xxx [OR]
RewriteCond %{REQUEST_URI} ^/ppc/photo/another
RewriteRule ^ - [E=ADD_TRAILING_SLASH:YES]

# Add slash to specific URLs
RewriteCond %{ENV:ADD_TRAILING_SLASH} =YES
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L]

# Remove slash on other URLs
RewriteCond %{ENV:ADD_TRAILING_SLASH} !=YES
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)/$ /$1 [R=301,L]

第一个规则设置一个环境变量,如果请求的URL中有一个应附加一个尾随斜杠。
第二个规则会在其中一个URL上加上结尾斜扛(如果省略的话)。
第三个规则删除其他URL上的尾部斜杠,我还删除了不必要的 * condition*,该 * condition * 测试尾部斜杠并捕获尾部斜杠之前的URL路径,并将其移到RewriteRulepattern -如果.htaccess文件位于文档根目录中,则这是很好的。
在测试之前,您需要清除浏览器的缓存。由于之前的301(永久)重定向删除了这些URL的尾部斜杠,因此浏览器将缓存这些URL。请先使用302(临时)重定向进行测试,以避免潜在的缓存问题。
然而,如果“特定文件夹URL(s)”遵循一个简单的模式,可以用一个正则表达式来概括,这可能会被简化。例如,/ppc/photo/sd-xxx形式的URL,其中xxx是任意3个字母/数字(正如你的例子可能暗示的)。

# Add slash to specific URLs
RewriteRule ^ppc/photo/sd-\w{3}$ /$0/ [R=301,L]

# Remove slash on other URLs
RewriteCond %{REQUEST_URI} !^/ppc/photo/sd-\w{3}/$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)/$ /$1 [R=301,L]

相关问题