Laravel动态路由仍可使用index.php访问

时间:2019-05-12 23:54:14

标签: php laravel laravel-5 routes

我已经在我建立的所有Laravel网站上解决此问题已有相当长的时间了,我发现当我将index.php分段添加到该站点时,仍然可以访问我的站点路由,例如当我使用此链接访问我的站点时-https://alawi.ng/how-it-works,当我在路径名称示例https://alawi.ng/index.php/how-it-works之前添加index.php时,该链接也可以访问。此问题似乎没什么大不了的,它对我的​​网站SEO排名有影响,导致路线或内容重复,请寻求帮助。

这是我的网站.htaccess中的内容

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]


    RewriteCond %{REQUEST_METHOD} ^TRACE
    RewriteRule ^ - [F]
    <Files .env>
        order allow,deny
        Deny from all
    </Files>
</IfModule>

这是我的web.config文件中的内容

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Imported Rule 1" stopProcessing="true">
          <match url="^(.*)/$" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Redirect" redirectType="Permanent" url="/{R:1}" />
        </rule>
        <rule name="Imported Rule 2" stopProcessing="true">
          <match url="^" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>


我想要一种情况,即通过该方法要么将用户重定向到实际的URL,然后从其中删除index.php-因此,当用户尝试访问https://alawi.ng/index.php/how-it-works时,他们将重定向到https://alawi.ng/how-it-works存在,如果不存在,那么我已经创建的404页面。

PS:我正在使用Linux服务器,共享主机,并将存储文件夹设置为775。

谢谢。

1 个答案:

答案 0 :(得分:1)

恕我直言,只有Google知道包含index.php的URL时,这才是问题。

如果您想安全起见,可以:

  • a canonical meta tag添加到模板中,指向不带index.php的URL。
  • 将这些行添加到您的.htaccess文件中,位于RewriteEngine on下方:
    # Remove 'index.php'
    RewriteCond %{THE_REQUEST} /index\.php [NC]
    RewriteRule (.*?)index\.php/?(.*)?$ /$1$2 [R=301,NE,L]

此配置将从所有URL中删除index.php并重定向用户。