簡體   English   中英

如何在 docker 上的 silverstripe 中配置 htaccess 文件?

[英]How can I configure the htaccess file in silverstripe on docker?

我有一個基於 SilverStripe 框架的項目,我想將它移到 docker 上,但是在 docker 配置之后,從public文件夾加載項目有一些問題。 在我的本地 wamp 上沒有 docker 時它可以正常工作,但是在使用 docker 之后,它無法識別我的友好 URL。 例如http://localhost:8080/admin

Dockerfile

FROM php:7.3-apache
ENV DOCUMENT_ROOT /var/www/html/public
    
COPY . $DOCUMENT_ROOT
WORKDIR $DOCUMENT_ROOT

COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
COPY composer.json composer.json
COPY composer.lock composer.lock
#RUN composer install --no-dev
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf &&\
    a2enmod rewrite &&\
    service apache2 restart
RUN apt-get update && apt-get install -y apt-transport-https
RUN apt-get install -y libicu-dev
RUN docker-php-ext-configure intl && docker-php-ext-install intl
RUN docker-php-ext-install mysqli pdo pdo_mysql

docker-compose.yml

version: '3.8'
services:
  web:
    image: backend
    working_dir: /var/www/html
    volumes:
      - .:/var/www/html
    ports:
      - 8080:80
  database:
    image: mysql:5.7
    volumes:
      - db-data:/var/lib/mysql
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=true
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    environment:
      PMA_HOST: database
      PMA_USER: root
      PMA_PASSWORD:
      UPLOAD_LIMIT: 1280M
      MEMORY_LIMIT: 1280M
      MAX_EXECUTION_TIME: 600
    ports:
      - 8089:80
volumes:
  db-data:

.htaccess文件:

RewriteEngine On 
RewriteRule ^(.*)$ public/$1

經過調查,我找到了下面的.htaccess文件來解決這個問題:

RewriteEngine On
Options Indexes SymLinksIfOwnerMatch FollowSymLinks
DirectoryIndex index.php index.html /example.php
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{DOCUMENT_ROOT}/public/$1 -f
RewriteRule (.+) public/$1 [L]
RewriteRule (.*) public/index.php?path=$1 [L,QSA]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM