.htaccess在某些情况下崩溃并且找不到404页面

时间:2017-06-23 07:16:44

标签: php apache .htaccess codeigniter mod-rewrite

我有.htaccess配置:

RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond $1 !^(index\.php?|css|js|images|robots\.txt) RewriteRule ^(.*)$ index.php?$1 [L]

问题是某些情况下htaccess崩溃并给出404错误(找不到页面) 这里有一些提示:

  1. 所有页面都包含阿拉伯字符
  2. 有时两个网址之间的差异非常小(一个普通字符)
  3. 如果我在域名之后添加/index.php它适用于所有人,但我不想让url中的index.php
  4. 我在Xampp上的本地机器上工作,但相同的代码和相同的HTACCESS文件在Linux服务器上正常工作
  5. 我会写一些htaccess崩溃而不是崩溃的情况(每个列表的第一个链接之间的差异只是一个普通的阿拉伯字符) 它不适用于这些:

    1- http://localhost/mywebsite/article/13057/%D9%85%D9%86(参数为“من”)

    2- http://localhost/mywebsite/article/13057/%D8%A3%D8%B3%D8%A6%D9%84%D8%A9-%D9%88%D8%A7%D8%B3%D8%AA%D9%81%D8%B3%D8%A7%D8%B1%D8%A7%D8%AA-%D9%85%D9%86-%D8%A7%D9%84%D8%AD%D8%B6%D9%88%D8%B1-%D8%A7%D9%84%D9%83%D8%B1%D8%A7%D9%85

    3- http://localhost/mywebsite/article/12803/%D8%AA%D9%81%D8%B3%D9%8A%D8%B1-%D8%A7%D9%84%D8%A2%D9%8A%D8%A7%D8%AA-14-19-%D9%84%D9%85%D8%A7%D8%B0%D8%A7-%D8%AD%D9%82%D8%AF-%D8%A5%D8%A8%D9%84%D9%8A%D8%B3-%D8%B9%D9%84%D9%89-%D8%A2%D8%AF%D9%85-

    并正确地为这些工作:

    1- http://localhost/mywebsite/article/13057/%D9%81%D9%86(参数为“فن”)

    2- http://localhost/mywebsite/article/514/%D8%A7%D9%84%D8%AF%D8%B1%D8%B3-61-95%D8%AA%D9%81%D8%B3%D9%8A%D8%B1-%D8%A7%D9%84%D8%A2%D9%8A%D8%A7%D8%AA180-184-%D8%A7%D9%84%D9%88%D8%B5%D9%8A%D8%A9-%D9%88%D8%A7%D9%84%D8%B9%D8%A8%D8%A7%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D8%B9%D8%A7%D8%A6%D8%B1%D9%8A%D8%A9

    3- http://localhost/mywebsite/article/2562/%D8%B3%D9%88%D8%B1%D8%A9-%D8%A7%D9%84%D9%86%D8%B3%D8%A7%D8%A1-004-%D8%A7%D9%84%D8%AF%D8%B1%D8%B31569-%D8%AA%D9%81%D8%B3%D9%8A%D8%B1-%D8%A7%D9%84%D8%A2%D9%8A%D8%A9-31-%D8%A7%D9%84%D9%83%D8%A8%D8%A7%D8%A6%D8%B1-%D9%88%D8%A7%D9%84%D8%B5%D8%BA%D8%A7%D8%A6%D8%B1

1 个答案:

答案 0 :(得分:0)

问题在于您的重写代码,就我所见,它不允许非拉丁字母。 尝试像

这样的东西
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([0-9]+)/([^/]+)/?$ index.php?art_id=$1 [NC,L]

我在移动电话上回答了对显示器的抱歉