我在 Heroku cedar 堆栈上运行一个 PHP 应用程序。有没有办法设置 URL 重写规则?我曾希望在 .htaccess 文件中执行此操作,但在此仅识别访问控制指令。
我看到 Ruby 的建议是使用 rake 重写,但是对于在 Heroku 上具有 URL 重写配置的 PHP 应用程序需要发生什么?
我在 Heroku cedar 堆栈上运行一个 PHP 应用程序。有没有办法设置 URL 重写规则?我曾希望在 .htaccess 文件中执行此操作,但在此仅识别访问控制指令。
我看到 Ruby 的建议是使用 rake 重写,但是对于在 Heroku 上具有 URL 重写配置的 PHP 应用程序需要发生什么?
您可以.htaccess
在 Heroku 上将普通文件与 PHP 一起使用。只需.htaccess
使用重写条件创建一个文件,类似于:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
这个例子来自 WordPress。我相信所有 url 现在都重定向到/index.php
. 此处的示例:https ://github.com/catsby/php-heroku-htaccess和此处的应用程序:http: //php-heroku-htaccess.herokuapp.com/something
因此,为了部分回答我自己的问题并继续我在评论中提到的内容,这是我需要制作的 Mac 和 heroku .htaccess 文件之间的区别:
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ $1/$2?arg=$3 #Mac
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ $1/$2.php?arg=$3 #heroku
这更像是一种解决方法而不是解决方案。我相信 apache 版本是不同的,但最后我只是投降了进一步调试,并使用了一个 .htaccess 文件,其中包含我注释/取消注释的两个部分。