php - 删除扩展 mod_rewrite 太宽容

标签 php apache .htaccess mod-rewrite

我正在尝试将 example.com/news.php 重写为 example.com/newsexample.com/news/ 。使用我的代码 example.com/news 工作得很好,但是 example.com/news/ 给了我一个 404 Not Found

我的代码:

<Directory /var/www/>
    Options -Indexes SymLinksIfOwnerMatch -MultiViews
    AllowOverride None
    Order allow,deny
    allow from all

    <IfModule mod_rewrite.c>

        RewriteEngine On

        RewriteBase /

        RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
        RewriteRule ^ %1 [R=301,L]

        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME}.php -f
        RewriteRule ^([^\.]+)$ $1.php [NC,L]

        RewriteRule ^games/csgo/([0-9]+)$ /games/csgo/view.php?id=$1 [L]

    </IfModule>
</Directory>

如何将 example.com/news.php 重定向到 example.com/newsexample.com/news/

最佳答案

您最好坚持使用一种网址类型! (带或不带尾部斜杠)并将错误类型重定向到其他类型,

此代码用于删除网址末尾的斜杠:

 RewriteRule ^(.*)/$ /$1 [L,R=301]

如果您在此之前添加 RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME}.php -f ,它也适用于子目录。

关于php - 删除扩展 mod_rewrite 太宽容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41477064/

相关文章:

php - php代码第14行 undefined index

php - 如何构建一个每个用户有 50 个变量的 MySQL 数据库?

php - php fileinfo 是否足以防止上传恶意文件?

php - 如何使用通过 jQuery 的 AJAX 发布请求 + php 发送的数组?

php - htaccess重定向后从移动网站访问父网站的文件夹

.htaccess - 存在生根系统时从 HTTP 到 HTTPS

java - TypeUtils 说 "null"是 "Object.class"的实例?

php - UTF-8贯穿始终

php - Apache/MySQL 问题

php - htaccess 动态查询字符串