When using the Laravel framwork, you are no stranger to the index.php
on the default URL on Laravel, this does not affect the logic but it affects your SEO website. A prime example is Laravel’s homepage:
Here I will guide you to skip index.php
by editing appProvidersRouteServiceProvider.php
as follows
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | <span class="token keyword">namespace</span> <span class="token package">App Providers</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Illuminate Foundation Support Providers RouteServiceProvider</span> <span class="token keyword">as</span> ServiceProvider <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Illuminate Support Facades Route</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Str</span> <span class="token punctuation">;</span> <span class="token keyword">class</span> <span class="token class-name">RouteServiceProvider</span> <span class="token keyword">extends</span> <span class="token class-name">ServiceProvider</span> <span class="token punctuation">{</span> <span class="token comment">/** * This namespace is applied to your controller routes. * * In addition, it is set as the URL generator's root namespace. * * @var string */</span> <span class="token keyword">protected</span> <span class="token variable">$namespace</span> <span class="token operator">=</span> <span class="token single-quoted-string string">'AppHttpControllers'</span> <span class="token punctuation">;</span> <span class="token comment">/** * Define your route model bindings, pattern filters, etc. * * @return void */</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">boot</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">//</span> <span class="token keyword">parent</span> <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">boot</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">/** * Define the routes for the application. * * @return void */</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">map</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">removeIndexPhpFromUrl</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">mapApiRoutes</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">mapWebRoutes</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">//</span> <span class="token punctuation">}</span> <span class="token comment">/** * Define the "web" routes for the application. * * These routes all receive session state, CSRF protection, etc. * * @return void */</span> <span class="token keyword">protected</span> <span class="token keyword">function</span> <span class="token function">mapWebRoutes</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> Route <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">middleware</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'web'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token keyword">namespace</span> <span class="token punctuation">(</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token keyword">namespace</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">group</span> <span class="token punctuation">(</span> <span class="token function">base_path</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'routes/web.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">/** * Define the "api" routes for the application. * * These routes are typically stateless. * * @return void */</span> <span class="token keyword">protected</span> <span class="token keyword">function</span> <span class="token function">mapApiRoutes</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> Route <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">prefix</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'api'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">middleware</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'api'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token keyword">namespace</span> <span class="token punctuation">(</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token keyword">namespace</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">group</span> <span class="token punctuation">(</span> <span class="token function">base_path</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'routes/api.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">/** * This will remove the index.php from the URL and prevent canonical conflicts. * * @return void */</span> <span class="token keyword">protected</span> <span class="token keyword">function</span> <span class="token function">removeIndexPhpFromUrl</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> Str <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">startsWith</span> <span class="token punctuation">(</span> <span class="token function">request</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">getRequestUri</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">,</span> <span class="token single-quoted-string string">'/index.php'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$url</span> <span class="token operator">=</span> <span class="token function">str_replace</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'/index.php'</span> <span class="token punctuation">,</span> <span class="token single-quoted-string string">''</span> <span class="token punctuation">,</span> <span class="token function">request</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">getRequestUri</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$url</span> <span class="token operator">=</span> <span class="token function">request</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">getSchemeAndHttpHost</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> Str <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">start</span> <span class="token punctuation">(</span> <span class="token variable">$url</span> <span class="token punctuation">,</span> <span class="token single-quoted-string string">'/'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token function">strlen</span> <span class="token punctuation">(</span> <span class="token variable">$url</span> <span class="token punctuation">)</span> <span class="token operator">></span> <span class="token number">0</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">header</span> <span class="token punctuation">(</span> <span class="token double-quoted-string string">"Location: <span class="token interpolation"><span class="token variable">$url</span></span> "</span> <span class="token punctuation">,</span> <span class="token boolean">true</span> <span class="token punctuation">,</span> <span class="token number">301</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> exit <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Good luck. Happy coding and peace out