使用.htaccess Mod_rewrite隐藏.php扩展名仅适用于丢失的页面

时间:2012-01-30 15:00:37

标签: apache .htaccess mod-rewrite url-rewriting

请原谅我,因为我很擅长使用.htaccess,并且我遇到了一些问题,因为我需要的设置虽然很简单,但看起来很少见。

基本上,我正在尝试从页面隐藏.php扩展名的辅助域,但同时也将不存在页面的请求重定向到自定义搜索页面。总体预期效果是:

realpage => realpage.php

falsepage => search.php中Q = falsepage

到目前为止,我所拥有的代码(见下文)似乎正确地应用了后者,但不是为'domain.com/realpage'返回'realpage.php'而是返回404错误。

我发现变种也将realpage移动到'search.php?q = missing',以防出现任何可能出错的迹象!

目前我的.htaccess文件:

   Options +FollowSymLinks
   Options +Indexes

   RewriteEngine On

   RewriteBase /

   RewriteRule ^([^\.]+)$ $1.php [L]

   RewriteCond %{SCRIPT_FILENAME} !-f
   RewriteRule ^(.*)\.php$ search.php?q=$1 [L]

感谢您提供的任何帮助!非常感谢!

1 个答案:

答案 0 :(得分:0)

我认为,对于你的第一条规则,你想要的是:

RewriteBase /
RewriteRule ^([^.]+)$ $1.php [L]

我通过rewrite rule tester运行了它,它会将'realpage'指向'realpage.php'。如果这不起作用,我会建议禁用你的第二条规则,确保第一条规则运行良好,然后在稍后添加对丢失文件的检查。