2017-08-31 92 views
0

我在Ubuntu/Apache服務器上有兩個網站。 一個是在目錄爲什麼網址中缺少斜槓添加:8080重定向?

/var/www/html/dir1 

,並且被配置爲與活化FollowSymlink選項中的Apache虛擬服務器。答覆

http://example.com 

二是

/var/www/html/dir2 

網頁的index.html爲了得到一個簡單的方法來第二友情鏈接的URL

http://example.com/dir2 

我做了內部的軟鏈接/ var/www/html/dir1到/ var/www/html/dir2命名爲dir1,一切正常。 參觀

http://example.com/dir2/ 

導致在/ var/www/html等/ DIR2頁面的index.html。

到目前爲止這麼好。

雖然,參觀

http://example.com/dir2 

(注意沒有最後的斜線的) 導致重定向到

http://example.com:8080/dir2/ 

爲什麼在這種情況下,端口被添加?我怎樣才能輕鬆刪除它?

編輯:我需要刪除端口,因爲從index.html一些發佈請求和:8080部分導致我一些Cors問題。

編輯:虛擬主機的conf

<VirtualHost *:8080> 
    DocumentRoot "/var/www/dir1/drupal" 
    ErrorLog /var/log/apache2/dir1-error.log 
    CustomLog /var/log/apache2/dir1-access.log combined 
    <Directory "/var/www/dir1/drupal/"> 
     Options ExecCGI FollowSymLinks 
     AllowOverride all 
     Allow from all 
     Order allow,deny 
    </Directory> 
</VirtualHost> 

htaccess的Dir1中

# 
# Apache/PHP/Drupal settings: 
# 

# Protect files and directories from prying eyes. 
<FilesMatch "/fb/|/phpMyAdmin/|\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$"> 
    Order allow,deny 
</FilesMatch> 

# Don't show directory listings for URLs which map to a directory. 
Options -Indexes 

# Follow symbolic links in this directory. 
Options +FollowSymLinks 

# Make Drupal handle any 404 errors. 
ErrorDocument 404 /index.php 

# Set the default handler. 
DirectoryIndex index.php index.html index.htm 

# Override PHP settings that cannot be changed at runtime. See 
# sites/default/default.settings.php and drupal_initialize_variables() in 
# includes/bootstrap.inc for settings that can be changed at runtime. 

# PHP 5, Apache 1 and 2. 
<IfModule mod_php5.c> 
    php_flag magic_quotes_gpc     off 
    php_flag magic_quotes_sybase    off 
    php_flag register_globals     off 
    php_flag session.auto_start    off 
    php_value mbstring.http_input    pass 
    php_value mbstring.http_output   pass 
    php_flag mbstring.encoding_translation off 

    php_value upload_max_filesize 100M 
    php_value post_max_size 100M 
</IfModule> 

# Requires mod_expires to be enabled. 
<IfModule mod_expires.c> 
    # Enable expirations. 
    ExpiresActive On 

    # Cache all files for 2 weeks after access (A). 
    ExpiresDefault A1209600 

    <FilesMatch \.php$> 
    ExpiresActive Off 
    </FilesMatch> 
</IfModule> 

# Various rewrite rules. 
<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteRule "(^|/)\." - [F] 

    RewriteRule ^js\/(.*)$ /sites/all/modules/ets/jslib/$1 [L] 
    RewriteRule (.*)jslib\/\d+\/(.*)$ $1jslib/$2 [L,QSA] 
    RewriteRule (.*)experiments\/\d+\/(.*)$ $1experiments/$2 [L,QSA] 
    RewriteRule (.*)exp_packages\/\d+\/(.*)$ $1exp_packages/$2 [L,QSA] 
    # Pass all requests not referring directly to files in the filesystem to 
    # index.php. Clean URLs are handled in drupal_environment_initialize(). 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !=/favicon.ico 
    RewriteRule^index.php [L] 

    # Rules to correctly serve gzip compressed CSS and JS files. 
    # Requires both mod_rewrite and mod_headers to be enabled. 
    <IfModule mod_headers.c> 
    # Serve gzip compressed CSS files if they exist and the client accepts gzip. 
    RewriteCond %{HTTP:Accept-encoding} gzip 
    RewriteCond %{REQUEST_FILENAME}\.gz -s 
    RewriteRule ^(.*)\.css $1\.css\.gz [QSA] 

    # Serve gzip compressed JS files if they exist and the client accepts gzip. 
    RewriteCond %{HTTP:Accept-encoding} gzip 
    RewriteCond %{REQUEST_FILENAME}\.gz -s 
    RewriteRule ^(.*)\.js $1\.js\.gz [QSA] 

    # Serve correct content types, and prevent mod_deflate double gzip. 
    RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1] 
    RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1] 

    <FilesMatch "(\.js\.gz|\.css\.gz)$"> 
     # Serve correct encoding type. 
     Header set Content-Encoding gzip 
     # Force proxies to cache gzipped & non-gzipped css/js files separately. 
     Header append Vary Accept-Encoding 
    </FilesMatch> 
    </IfModule> 
</IfModule> 
+2

你可以顯示'example.com'的'VirtualHost'條目嗎?在這裏添加完整的.htaccess。 – anubhava

+1

完成!謝謝 –

回答

1

添加此規則僅低於RewriteEngine On行:

# add a trailing slash to directories 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule [^/]$ %{REQUEST_URI}/ [L,NE,R=301] 

並重新測試在一個新的瀏覽器或完全清除瀏覽器緩存。

+0

這是一個很好的解決方案,但是這個網站比我所描述的解釋情況複雜得多,在* all *的情況下添加一個斜線對我而言聽起來有點可怕。只有在請求是專門針對http://example.com:8080/dir2的情況下,纔可能添加此內容。 –

+0

不工作。它還在添加8080.( –

+0

)'dir2'還有一個.htaccess嗎?在Chrome開發工具中測試禁用**緩存**並檢入網絡標籤什麼是您獲得的301/302重定向網址。 – anubhava