【问题标题】:facing issues in .htaccess rewrite URL.htaccess 重写 URL 面临问题
【发布时间】:2014-01-23 08:06:43
【问题描述】:

我正在用 .htaccess 重写我的网站 URL,但遇到问题,我不知道重写 URL,我只是从互联网上复制并粘贴代码,

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/?$ page.php? [L,QSA]

这适用于我并将 www.domain.com/page.php?id=1 重定向到 www.domain.com/page?id=1

但是当我打开 www.domain.com/someotherpage.php 然后它会将我重定向到 page.php 时出现问题。

还有我在 URL 中随机写入的内容,例如打开 www.domain.com/page

domain.com/any
domain.com/thing
domain.com/written

我对此问题进行了一些研究,但找不到任何解决方案,然后我在这里提出了我的问题。

【问题讨论】:

    标签: php apache .htaccess url


    【解决方案1】:

    试试这个代码添加.php扩展:

    RewriteEngine On
    
    # show 404 for .php requests
    RewriteCond %{THE_REQUEST} \.php[?\s/] [NC]
    RewriteRule ^ - [R=404,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1.php -f
    RewriteRule ^(.+?)/?$ /$1.php [L]
    

    【讨论】:

    • 有可能当任何人尝试 domain.com/page.php 时,它会显示错误 404,因此没有人可以看到我的网站是在哪个平台上构建的。
    • 感谢它的工作,但显示 PAGE NOT FOUND 而不是 404 ERROR
    • @Syed 有什么区别? 404 错误找不到页面。查看答案的状态码[R=404]
    • 404 错误是服务器中的一个页面,可以在其显示时重新设计/编辑 此外,在尝试使用 ErrorDocument 处理请求时遇到 500 Internal Server Error 错误。 不可编辑。
    【解决方案2】:

    您应该只使用 mod_negotiation 并打开 Multiviews:

    Options Multiviews
    

    【讨论】:

      【解决方案3】:

      我建议把允许的可以从root访问的文件放上去

      RewriteRule !\.(js|ico|txt|gif|jpg|png|css|swf|JPG|jpeg|html|woff|ttf|svg|htm|cur|PNG|JPEG|GIF|php|whatever_file_type)$ index.php
      

      如果你想访问 public/ 目录中 index.php 以外的 php 脚本,请尝试它在 zend 框架中工作的解决方案。

      【讨论】:

        猜你喜欢
        • 2011-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-30
        相关资源
        最近更新 更多