URL Rewriting adding slash at the end breaks my css links

前端 未结 3 1290
一整个雨季
一整个雨季 2021-01-23 03:58

I\'m using Apache mod_rewrite to rewrite my url\'s in a PHP application. I have a login.php in my application root. I wrote the following lines in .htaccess file (I\'m using HTM

相关标签:
3条回答
  • 2021-01-23 04:08

    When your browser goes to http://example.com/signin/ the relative base URI becomes /signin/. This means every relative link in the content of that entire page will have /signin/ appended to it as the URL base. The original link was just /login.php, which makes the base URI /. Your browser doesn't know anything about your rewrite rules, just what it sees in the location bar.

    You need to change all your links to absolute URLs (with a leading /) or specify a relative base URI in the page's header (inside the <head> </head> tags):

    <base href="/" />
    
    0 讨论(0)
  • 2021-01-23 04:26

    One way is to have a new redirect rule to remove trailing slash and then your css/js would not be a problem:

    RewriteEngine On
    RewriteBase /apx/
    
    # remove trailing slash from non-directories
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+?)/$ $1 [NE,R=302,L]
    
    RewriteRule ^signin/?$ login.php [L,NC]
    

    However also consider using absolute paths for css/js e.g.

    <link href="/css/style.css" rel="stylesheet">
    

    Or else you can add this in the <head> section of your page's HTML:

    <base href="/apx/" />
    
    0 讨论(0)
  • 2021-01-23 04:26

    Use <base href="base link" /> This will set the base of links,img basically everything. This will fix the links. Example: <base href="/" />

    0 讨论(0)
提交回复
热议问题