如何解决静态到动态内容的 mod_rewrite 问题

问题描述

如果有人能帮助解决这个模组重写问题,我将不胜感激。多年来,我在我的 htaccess、apache 包含文件中都有这个,它工作得很好。

    public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseHttpsRedirection();

        app.UseRouting();

        app.UseCors();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }

但最近它停止工作了。浏览器显示“未指定输入文件”。并且访问日志显示 404 响应代码必须满足上述条件的请求。

重写引擎已开启。这就是我目前的 htaccess mod_rewrite 规则

RewriteRule ^/article/([0-9]*).html$ /article/article.PHP?id=$1 [NC,L]

解决方法

根据您显示的示例/尝试,您能否尝试遵循 htaccess 规则。在测试您的 URL 之前,请确保将您的 htaccess 规则文件放在根目录中并清除浏览器缓存。

<IfModule mod_rewrite.c>
Options -MultiViews -Indexes
RewriteEngine On
RewriteBase /

##Rules for non-existing pages.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

##Rules for articile and relationship uris here.
RewriteRule ^(?:article|relationships)/([0-9]*)\.html/?$ article/article.php?id=$1 [NC,L]

##Rules for 404 handling.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(js|css|jpeg|jpg|gif|png|ico|map)(\?|$) 404error.php  [L,NC]

</IfModule>