dongyashun2559 2019-02-19 19:26
浏览 76
已采纳

.htaccess如何重写多个.php文件的规则

Im using right now the next .htaccess:

RewriteEngine On
RewriteRule ^(.*)$ page1.php?$1 [QSA]

its working fine with page1, but not with page2

how can i make it to work please?

I tried this:

RewriteRule ^(.*)$ $1.php?$2 [QSA]

for every php file in the folder, but it's not working.

  • 写回答

1条回答 默认 最新

  • dsyk33753 2019-02-19 19:37
    关注

    I'd say this is what you are immediately looking for:

    RewriteEngine On
    RewriteRule ^/?page1/(.*)$ /page1.php?$1 [END]
    RewriteRule ^/?page2/(.*)$ /page2.php?$1 [END]
    

    But it might be worth to check if this cannot be generalized for arbitrary "pages":

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !-f
    RewriteCond %{REQUEST_URI}.php -f
    RewriteRule ^/?(.+)/(.*)$ /$1.php?$2 [END]
    

    In case you receive an internal server error (http status 500) using the rule above then chances are that you operate a very old version of the apache http server. You will see a definite hint to an unsupported [END] flag in your http servers error log file in that case. You can either try to upgrade or use the older [L] flag, it probably will work the same in this situation, though that depends a bit on your setup.

    This rule will work likewise in the http servers host configuration or inside a dynamic configuration file (".htaccess" file). Obviously the rewriting module needs to be loaded inside the http server and enabled in the http host. In case you use a dynamic configuration file you need to take care that it's interpretation is enabled at all in the host configuration and that it is located in the host's DOCUMENT_ROOT folder.

    And a general remark: you should always prefer to place such rules in the http servers host configuration instead of using dynamic configuration files (".htaccess"). Those dynamic configuration files add complexity, are often a cause of unexpected behavior, hard to debug and they really slow down the http server. They are only provided as a last option for situations where you do not have access to the real http servers host configuration (read: really cheap service providers) or for applications insisting on writing their own rules (which is an obvious security nightmare).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 gki vendor hook
  • ¥15 centos7中sudo命令无法使用
  • ¥15 灰狼算法和蚁群算法如何结合
  • ¥15 这是一个利用ESP32自带按键和LED控制的录像代码,编译过程出现问题,请解决并且指出错误,指导如何处理 ,协助完成代码并上传代码
  • ¥20 stm32f103,hal库 hal_usart_receive函数接收不到数据。
  • ¥20 求结果和代码,sas利用OPTEX程序和D-efficiency生成正交集
  • ¥50 adb连接不到手机是怎么回事?
  • ¥20 抓取数据时发生错误: get_mooncake_data() missing 1 required positional argument: 'driver'的问题,怎么改出正确的爬虫代码?
  • ¥15 vs2022无法联网
  • ¥15 TCP的客户端和服务器的互联