我有一個站點使用.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