-
-
Save akinozgen/c12b2fe382e1d43c79e2afbdcd14ef7a to your computer and use it in GitHub Desktop.
Symfony full .htaccess file
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Based on http://stackoverflow.com/questions/17313023/symfony-2-2-1-url-rewrite-issue | |
# Use the front controller as index file. It serves as fallback solution when | |
# every other rewrite/redirect fails (e.g. in an aliased environment without | |
# mod_rewrite). Additionally, this reduces the matching process for the | |
# startpage (path "/") because otherwise Apache will apply the rewritting rules | |
# to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl). | |
DirectoryIndex index.php | |
#DirectoryIndex app_dev.php | |
<IfModule mod_rewrite.c> | |
RewriteEngine On | |
# Redirect to URI without front controller to prevent duplicate content | |
# (with and without `/index.php`). Only do this redirect on the initial | |
# rewrite by Apache and not on subsequent cycles. Otherwise we would get an | |
# endless redirect loop (request -> rewrite to front controller -> | |
# redirect -> request -> ...). | |
# So in case you get a "too many redirects" error or you always get redirected | |
# to the startpage because your Apache does not expose the REDIRECT_STATUS | |
# environment variable, you have 2 choices: | |
# - disable this feature by commenting the following 2 lines or | |
# - use Apache >= 2.3.9 and replace all L flags by END flags and remove the | |
# following RewriteCond (best solution) | |
RewriteCond %{ENV:REDIRECT_STATUS} ^$ | |
#RewriteRule ^app_dev\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L] | |
RewriteRule ^app\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L] | |
# If the requested filename exists, simply serve it. | |
# We only want to let Apache serve files and not directories. | |
RewriteCond %{REQUEST_FILENAME} -f | |
RewriteRule .? - [L] | |
# cache-bust assets url rewrite | |
# Example format: /cpv-10/js/test123.js -> /js/test123.js | |
# This allows us to change the asset version and "bust" intermediate caches (like varnish) | |
# See http://symfony.com/doc/current/reference/configuration/framework.html#ref-framework-assets-version | |
# See http://symfony.com/doc/current/reference/configuration/framework.html#assets-version-format | |
RewriteCond %{REQUEST_FILENAME} !-f | |
RewriteCond %{REQUEST_FILENAME} !-d | |
RewriteRule ^cpv-\d+\/(.+)$ $1 [L] | |
RewriteCond %{REQUEST_FILENAME} -f | |
#RewriteRule ^(.*)$ app_dev.php [QSA,L] | |
RewriteRule ^(.*)$ index.php [QSA,L] | |
# The following rewrites all other queries to the front controller. The | |
# condition ensures that if you are using Apache aliases to do mass virtual | |
# hosting, the base path will be prepended to allow proper resolution of the | |
# index.php file; it will work in non-aliased environments as well, providing | |
# a safe, one-size fits all solution. | |
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$ | |
RewriteRule ^(.*) - [E=BASE:%1] | |
#RewriteRule .? %{ENV:BASE}app_dev.php [L] | |
RewriteRule .? %{ENV:BASE}index.php [L] | |
</IfModule> | |
<IfModule !mod_rewrite.c> | |
<IfModule mod_alias.c> | |
# When mod_rewrite is not available, we instruct a temporary redirect of | |
# the startpage to the front controller explicitly so that the website | |
# and the generated links can still be used. | |
#RedirectMatch 302 ^/$ /app_dev.php/ | |
RedirectMatch 302 ^/$ /index.php/ | |
# RedirectTemp cannot be used instead | |
</IfModule> | |
</IfModule> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment