为什么我的.htaccess和mod_rewrite会给我一个500错误?

为什么我的.htaccess和mod_rewrite会给我一个500错误?,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我的.htaccess如下所示: <FilesMatch ".(eot|ttf|otf|woff|svg)"> Header set Access-Control-Allow-Origin "*" </FilesMatch> ErrorDocument 400 /errors/400.php ErrorDocument 401 /errors/401.php ErrorDocument 403 /errors/403.php ErrorDocument 404 /e

我的.htaccess如下所示:

<FilesMatch ".(eot|ttf|otf|woff|svg)">
 Header set Access-Control-Allow-Origin "*"
 </FilesMatch>

ErrorDocument 400 /errors/400.php
ErrorDocument 401 /errors/401.php
ErrorDocument 403 /errors/403.php
ErrorDocument 404 /errors/404.php
ErrorDocument 500 /errors/500.php

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/$ /$1 [R=302,L,NE]

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302,NE]

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=302,L,NE]

RewriteCond %{THE_REQUEST} \ /(.+)\.php
RewriteRule ^ /%1 [L,R=302,NE]

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(.*?)\.(www\.)?domain\.com$ [NC]
RewriteRule ^.*$ https://www.domain.com/page?user=%1 [L,QSA,R=302,NE]

***THIS IS WHERE I INSERT THE NEW RULE***

RewriteRule ^([^/]*)-([0-9]+)\.html$ product?name=$1&product_id=$2 [L,QSA]
但是,当我将此添加到最后第二行时,它不起作用


这里出了什么问题?

您的规则没有问题,但您需要从中排除真实文件和目录:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /page?user=$1 [L,QSA]

您的规则可以,但您需要从中排除真实文件和目录:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /page?user=$1 [L,QSA]

奇怪的是,这给了我一个500错误:(现在尝试上下移动规则,看看是否有效…@num8er-OP表示子域->页面规则有效。所以mod_rewrite被启用了…奇怪的是,其他规则搞乱了,一定是出了什么问题。我不知道怎么回事。奇怪的是,这给了我一个500错误:(正在尝试将规则向上或向下移动以查看是否有效…@num8er-OP表示子域->页面规则有效。因此启用了mod_rewrite…奇怪。其他规则将其弄乱一定是出了什么问题。无法弄清楚会发生什么。是的!确实有效…是的!确实有效。。。