I am using cakephp in one of my projects and my client wants the site URLs to end with .html and not the usual friendly urls. I was wondering if its possible in cakephp to do so through any of its routing techniques. Please help.
相关问题
- Views base64 encoded blob in HTML with PHP
- Laravel Option Select - Default Issue
- PHP Recursively File Folder Scan Sorted by Modific
- Can php detect if javascript is on or not?
- Using similar_text and strpos together
According to this page you can do something like this
Router::connect('/(.*).html', array('controller' => 'pages', 'action' => 'display'));
but as you are talking about extensions, that may have other consequences.
One of the parameters you can send to Router::url() (which is called by other methods like HtmlHelper::link() and Controller::redirect()) is 'ext'. Try setting this to 'html'. E.g:
or
If it works, try figuring out a way you can override Router::url() to add it in by default.
You will need to associate the html extension to the PHP module in Apache as well. I don't remember exactly the adjustment needed but it will be in /etc/httpd/httpd.conf file. (This file may be in a slightly different place depending on your server's OS.) Just look for the line that associates .php with the PHP module. I believe you may be able to define this in the .htaccess file as well but weather or not you can depends on what you are allowed to do in the httpd.conf file.
Had to solve this without using Routes. Kept the default route entry for pages:
and in the display action removed the .html extension and rendered the respective view:
While calling the pages added 'ext' to be .html
As Routes Configuration - File extensions documentation section says, you could use:
This will tell the router to remove any matching file extensions, and then parse what remains.
That is well documented in the cookbook.
UPDATE: http://book.cakephp.org/2.0/en/development/routing.html#file-extensions