【问题标题】:RewriteCond to catch URLs not ending with /RewriteCond 捕获不以 / 结尾的 URL
【发布时间】:2014-05-29 03:56:30
【问题描述】:

我正在尝试将 RewriteCond 写入我的 htaccess 文件以仅捕获不以 / 结尾的 URL。

这是我目前的文件:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ ./wedding.php?w=$1

所以我只在 URL 不以 / 结尾时才尝试传递“W”GET var

所以这不会被重写:

domain.com/bla/

但这会:

domain.com/bla

请帮忙

干杯!

答案: 这就是我最终使用的:

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ ./wedding.php?w=$1

为 Howlin 编辑: 这是我完整的 htaccess,我有 wordpress 和一个 web 应用程序一起存在于同一个目录中,所以如果 webapp 的 URL 不是它,它将转到 Wordpress:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ ./wedding.php?w=$1

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewrite-module


    【解决方案1】:

    这应该适合你:

    Options +FollowSymLinks
    RewriteEngine On
    
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteRule ^([A-Za-z0-9]+)$ /wedding.php?w=$1 [R]
    

    以上内容只应重定向不存在且末尾没有/ 的网址。

    【讨论】:

    • 谢谢,请查看我最终使用的已编辑答案。它们是相同的还是您更喜欢?
    • 几乎一样。你唯一的问题是,如果你有一个类似domain.com/bla/h 的网址,那么它将被重定向。
    • 哦,所以你的更好!谢谢我会用的! :) [R] 做什么?
    • 您的 htaccess 中有什么(您可以将其作为编辑添加到您的问题中)以及您尝试的 url 是什么?
    • 这有什么问题?如果我输入一个不存在的 url,那么它将发送到 wedding.php 页面,它不会在 url 中显示,因为您没有在该规则之后添加 [R]。但它确实为我重定向。
    猜你喜欢
    • 2019-10-20
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 2018-10-23
    • 1970-01-01
    • 2010-10-10
    • 2016-08-05
    相关资源
    最近更新 更多