我有一个站点使用.htaccess来重写规则,但soem不起作用。Linux Mint - Apache 2.4 .htaccess rewriteRule不起作用
这是我的.htaccess文件:
RewriteEngine On
RewriteBase/
# Inicio
RewriteRule ^inicio|home|index$ index.php [QSA,L]
# Paginacion amigable
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.([0-9]+)$ $1?pag=$2 [QSA,L]
# Miniaturas
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*\/)?tdd([A-Za-z0-9_~-]*)\/(.*)$ imagen.php?param=$2&src=$1$3 [QSA,L]
#paginas
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*-p([0-9]+)$ interna.php?id=$1 [QSA]
#Intranet
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*-i([0-9]+)$ intranet.php?id=$1 [QSA]
#publicaciones
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*-n([0-9]+)$ publicaciones_detalle.php?id=$1 [QSA]
# Paginas sin extension
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ $1.php [QSA]
# sitemap
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule sitemap.xml sitemap.php [QSA]
# Buscador
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^search$ buscar.php [QSA]
# En caso de no existencia
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ 404.php [QSA]
# Paginas incluidas en el template
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} ^.*\.php$
RewriteRule ^(.*)$ plantilla.php?uri=$1 [QSA]
但我有例如错误,当我访问www.domain.com/contacto 它抛出我这个错误:
Not Found
The requested URL /contacto was not found on this server.
但如果我改变这样的网址www.domain.com/contacto.php它的作品。
我觉得这个从底部列表中的规则应该做的工作是不是?
# Paginas sin extension
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ $1.php [QSA]
为什么我做错了?
这些加载我的Apache的所有模块:
这是对我的domain.dev.conf文件/ etc /启用站点的Apache2 /:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/domain/
ServerAlias www.domain.dev
ServerName domain.dev
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/domain>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
RewriteEngine On
</Directory>
</VirtualHost>
这是在Apache 2.2上工作正常,但升级到2.4后停止工作。
是否有应用htaccess中
形式的Apache 2和2.4之间的差异谢谢
'planntilla.php'规则块的用途是什么?目前状态是,如果你请求'/ foo'并且'/ foo'存在并且请求文件名是'/.*.php',那么重写'plantilla.php' - 这是没有意义的。 –
Plantilla.php就像一个模板。所有其他页面都在该文件中回显 – juanpscotto